Commit 7787cfc7 authored by lenovo's avatar lenovo

通用转换模块

parent 549b9c0f
package com.ruoyi.system.controller;
import java.util.List;
import com.ruoyi.system.domain.ActSuppliesRole;
import com.ruoyi.system.domain.ActSuppliesRoleDetail;
import com.ruoyi.system.domain.ActSuppliesTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -33,6 +37,20 @@ public class ActSuppliesConvertroleController extends BaseController
@Autowired
private IActSuppliesConvertroleService actSuppliesConvertService;
/**
* 查询模板
*/
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:listTemp')")
@GetMapping("/listTemp")
public TableDataInfo listTemp()
{
startPage();
List<ActSuppliesTemplate> list = actSuppliesConvertService.selectActSuppliesConvertListTemp();
return getDataTable(list);
}
/**
* 查询通用规则列表
*/
......@@ -49,7 +67,6 @@ public class ActSuppliesConvertroleController extends BaseController
* 导出通用规则列表
*/
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:export')")
@Log(title = "通用规则", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(ActSuppliesConvertrole actSuppliesConvertrole)
{
......@@ -72,7 +89,6 @@ public class ActSuppliesConvertroleController extends BaseController
* 新增通用规则
*/
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:add')")
@Log(title = "通用规则", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ActSuppliesConvertrole actSuppliesConvertrole)
{
......@@ -83,7 +99,6 @@ public class ActSuppliesConvertroleController extends BaseController
* 修改通用规则
*/
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:edit')")
@Log(title = "通用规则", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody ActSuppliesConvertrole actSuppliesConvertrole)
{
......@@ -100,4 +115,28 @@ public class ActSuppliesConvertroleController extends BaseController
{
return toAjax(actSuppliesConvertService.deleteActSuppliesConvertByIds(ids));
}
/**
* 获取通用规则列表
*/
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:convertRoleList')")
@GetMapping(value = "/convertRoleList/{id}")
public TableDataInfo convertRoleList(@PathVariable("id") Integer id)
{
List<ActSuppliesConvertrole> list = actSuppliesConvertService.convertRoleList(id);
return getDataTable(list);
}
/**
* 模板转换页面根据规则ID查询规则详情接口
* */
@PreAuthorize("@ss.hasPermi('ActSuppliesConvertrole:ActSuppliesConvertrole:convertRoleListid')")
@GetMapping("/convertRoleListid/{id}")
public TableDataInfo convertRoleListid(@PathVariable("id") Integer id){
List<ActSuppliesConvertrole> list = actSuppliesConvertService.convertRoleListid(id);
return getDataTable(list);
}
}
......@@ -117,7 +117,6 @@ public class ActSuppliesRoleDetailController extends BaseController
public AjaxResult add(@RequestBody ActSuppliesRoleDetail actSuppliesRoleDetail)
{
return toAjax(actSuppliesRoleDetailService.insertActSuppliesRoleDetail(actSuppliesRoleDetail));
}
/**
......
package com.ruoyi.system.domain;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 通用规则对象 act_supplies_convert
*
......@@ -22,6 +25,40 @@ public class ActSuppliesConvertrole extends BaseEntity
@Excel(name = "模板id")
private Long tempId;
/** 模板名称 */
private String templateName;
private List<MyListItem> list;
public List<MyListItem> getList() {
return list;
}
public void setList(List<MyListItem> list) {
this.list = list;
}
/** 导入表行/列/单元格选择 */
private Long[] ze;
/** 导入表列坐标 */
private Long[] ce;
/** 导入表行坐标 */
private Long[] re;
/** 导入表单元格长度 */
private Long[] le;
/** 模板表行/列/单元格选择*/
private Long[] zt;
/** 模板表列坐标 */
private Long[] ct;
/** 模板表行坐标 */
private Long[] rt;
/** 模板表单元格长度 */
private Long[] lt;
/** 运算方法 */
private Long[] ys;
/** 规则名称 */
@Excel(name = "规则名称")
private String name;
......@@ -34,7 +71,15 @@ public class ActSuppliesConvertrole extends BaseEntity
@Excel(name = "状态")
private Long status;
public void setId(Long id)
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public void setId(Long id)
{
this.id = id;
}
......@@ -61,12 +106,12 @@ public class ActSuppliesConvertrole extends BaseEntity
{
return name;
}
public void setContent(String content)
public void setContent(String content)
{
this.content = content;
}
public String getContent()
public String getContent()
{
return content;
}
......@@ -80,6 +125,78 @@ public class ActSuppliesConvertrole extends BaseEntity
return status;
}
public Long[] getZe() {
return ze;
}
public void setZe(Long[] ze) {
this.ze = ze;
}
public Long[] getCe() {
return ce;
}
public void setCe(Long[] ce) {
this.ce = ce;
}
public Long[] getRe() {
return re;
}
public void setRe(Long[] re) {
this.re = re;
}
public Long[] getLe() {
return le;
}
public void setLe(Long[] le) {
this.le = le;
}
public Long[] getZt() {
return zt;
}
public void setZt(Long[] zt) {
this.zt = zt;
}
public Long[] getCt() {
return ct;
}
public void setCt(Long[] ct) {
this.ct = ct;
}
public Long[] getRt() {
return rt;
}
public void setRt(Long[] rt) {
this.rt = rt;
}
public Long[] getLt() {
return lt;
}
public void setLt(Long[] lt) {
this.lt = lt;
}
public Long[] getYs() {
return ys;
}
public void setYs(Long[] ys) {
this.ys = ys;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
package com.ruoyi.system.domain;
public class MyListItem {
private Long ys;
private Long ze;
private Long re;
private Long ce;
private Long le;
private Long zt;
private Long rt;
private Long ct;
private Long lt;
// 构造函数
public MyListItem() {
}
public Long getYs() {
return ys;
}
public void setYs(Long ys) {
this.ys = ys;
}
public Long getZe() {
return ze;
}
public void setZe(Long ze) {
this.ze = ze;
}
public Long getRe() {
return re;
}
public void setRe(Long re) {
this.re = re;
}
public Long getCe() {
return ce;
}
public void setCe(Long ce) {
this.ce = ce;
}
public Long getLe() {
return le;
}
public void setLe(Long le) {
this.le = le;
}
public Long getZt() {
return zt;
}
public void setZt(Long zt) {
this.zt = zt;
}
public Long getRt() {
return rt;
}
public void setRt(Long rt) {
this.rt = rt;
}
public Long getCt() {
return ct;
}
public void setCt(Long ct) {
this.ct = ct;
}
public Long getLt() {
return lt;
}
public void setLt(Long lt) {
this.lt = lt;
}
// // Getters 和 Setters
// public String getYs() {
// return ys;
// }
//
// public void setYs(String ys) {
// this.ys = ys;
// }
//
// public String getZe() {
// return ze;
// }
//
// public void setZe(String ze) {
// this.ze = ze;
// }
//
// public String getRe() {
// return re;
// }
//
// public void setRe(String re) {
// this.re = re;
// }
//
// public String getCe() {
// return ce;
// }
//
// public void setCe(String ce) {
// this.ce = ce;
// }
//
// public String getLe() {
// return le;
// }
//
// public void setLe(String le) {
// this.le = le;
// }
//
// public String getZt() {
// return zt;
// }
//
// public void setZt(String zt) {
// this.zt = zt;
// }
//
// public String getRt() {
// return rt;
// }
//
// public void setRt(String rt) {
// this.rt = rt;
// }
//
// public String getCt() {
// return ct;
// }
//
// public void setCt(String ct) {
// this.ct = ct;
// }
//
// public String getLt() {
// return lt;
// }
//
// public void setLt(String lt) {
// this.lt = lt;
// }
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.ActSuppliesConvertrole;
import com.ruoyi.system.domain.ActSuppliesTemplate;
/**
* 通用规则Mapper接口
......@@ -58,4 +59,10 @@ public interface ActSuppliesConvertroleMapper
* @return 结果
*/
public int deleteActSuppliesConvertByIds(Long[] ids);
List<ActSuppliesTemplate> selectActSuppliesConvertListTemp();
List<ActSuppliesConvertrole> convertRoleList(Integer id);
List<ActSuppliesConvertrole> convertRoleListid(Integer id);
}
......@@ -2,6 +2,7 @@ package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.ActSuppliesConvertrole;
import com.ruoyi.system.domain.ActSuppliesTemplate;
/**
* 通用规则Service接口
......@@ -58,4 +59,10 @@ public interface IActSuppliesConvertroleService
* @return 结果
*/
public int deleteActSuppliesConvertById(Long id);
List<ActSuppliesTemplate> selectActSuppliesConvertListTemp();
List<ActSuppliesConvertrole> convertRoleList(Integer id);
List<ActSuppliesConvertrole> convertRoleListid(Integer id);
}
package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.ActSuppliesTemplate;
import com.ruoyi.system.domain.MyListItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.ActSuppliesConvertroleMapper;
......@@ -29,7 +38,25 @@ public class ActSuppliesConvertroleServiceImpl implements IActSuppliesConvertrol
@Override
public ActSuppliesConvertrole selectActSuppliesConvertById(Long id)
{
return actSuppliesConvertMapper.selectActSuppliesConvertById(id);
ActSuppliesConvertrole actSuppliesConvertrole = actSuppliesConvertMapper.selectActSuppliesConvertById(id);
String content = actSuppliesConvertrole.getContent();
ObjectMapper objectMapper = new ObjectMapper();
MyListItem[] items = new MyListItem[0];
try {
items = objectMapper.readValue(content, MyListItem[].class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
List<MyListItem> list = new ArrayList<>();
for (int i=0;i<items.length;i++){
list.add(items[i]);
}
actSuppliesConvertrole.setList(list);
return actSuppliesConvertrole;
}
/**
......@@ -53,6 +80,26 @@ public class ActSuppliesConvertroleServiceImpl implements IActSuppliesConvertrol
@Override
public int insertActSuppliesConvert(ActSuppliesConvertrole actSuppliesConvertrole)
{
List<String> filteredList = new ArrayList<>();
for (int i =0 ;i<actSuppliesConvertrole.getList().size(); i++){
filteredList.add("{\"ce\":\""+(actSuppliesConvertrole.getList().get(i).getCe()-1)+"\",\"re\":\""+(actSuppliesConvertrole.getList().get(i).getRe()-1)+"\",\"le\":\""+(actSuppliesConvertrole.getList().get(i).getLe())+"\",\"ze\":\""+(actSuppliesConvertrole.getList().get(i).getZe())+"\",\"ct\":\""+(actSuppliesConvertrole.getList().get(i).getCt()-1)+"\",\"rt\":\""+(actSuppliesConvertrole.getList().get(i).getRt()-1)+"\",\"lt\":\""+(actSuppliesConvertrole.getList().get(i).getLt())+"\",\"zt\":\""+(actSuppliesConvertrole.getList().get(i).getZt())+"\",\"ys\":\""+(actSuppliesConvertrole.getList().get(i).getYs())+"\"}") ;
}
// [{"ce": "0", "re": "0", "le": "6","ze": "1", "ct": "0", "rt": "0","lt":"6","zt":"1","ys": "0"}]
String content = String.join(",",filteredList);
String content2 = "["+content+"]";
actSuppliesConvertrole.setContent(content2);
SysUser user = SecurityUtils.getLoginUser().getUser();
actSuppliesConvertrole.setCreateBy(user.getUserName());
actSuppliesConvertrole.setCreateTime(DateUtils.getNowDate());
return actSuppliesConvertMapper.insertActSuppliesConvert(actSuppliesConvertrole);
}
......@@ -66,6 +113,24 @@ public class ActSuppliesConvertroleServiceImpl implements IActSuppliesConvertrol
@Override
public int updateActSuppliesConvert(ActSuppliesConvertrole actSuppliesConvertrole)
{
List<String> filteredList = new ArrayList<>();
for (int i =0 ;i<actSuppliesConvertrole.getList().size(); i++){
filteredList.add("{\"ce\":\""+(actSuppliesConvertrole.getList().get(i).getCe()-1)+"\",\"re\":\""+(actSuppliesConvertrole.getList().get(i).getRe()-1)+"\",\"le\":\""+(actSuppliesConvertrole.getList().get(i).getLe())+"\",\"ze\":\""+(actSuppliesConvertrole.getList().get(i).getZe())+"\",\"ct\":\""+(actSuppliesConvertrole.getList().get(i).getCt()-1)+"\",\"rt\":\""+(actSuppliesConvertrole.getList().get(i).getRt()-1)+"\",\"lt\":\""+(actSuppliesConvertrole.getList().get(i).getLt())+"\",\"zt\":\""+(actSuppliesConvertrole.getList().get(i).getZt())+"\",\"ys\":\""+(actSuppliesConvertrole.getList().get(i).getYs())+"\"}") ;
}
// [{"ce": "0", "re": "0", "le": "6","ze": "1", "ct": "0", "rt": "0","lt":"6","zt":"1","ys": "0"}]
String content = String.join(",",filteredList);
String content2 = "["+content+"]";
actSuppliesConvertrole.setContent(content2);
SysUser user = SecurityUtils.getLoginUser().getUser();
actSuppliesConvertrole.setUpdateBy(user.getUserName());
actSuppliesConvertrole.setUpdateTime(DateUtils.getNowDate());
return actSuppliesConvertMapper.updateActSuppliesConvert(actSuppliesConvertrole);
}
......@@ -93,4 +158,19 @@ public class ActSuppliesConvertroleServiceImpl implements IActSuppliesConvertrol
{
return actSuppliesConvertMapper.deleteActSuppliesConvertById(id);
}
@Override
public List<ActSuppliesTemplate> selectActSuppliesConvertListTemp() {
return actSuppliesConvertMapper.selectActSuppliesConvertListTemp();
}
@Override
public List<ActSuppliesConvertrole> convertRoleList(Integer id) {
return actSuppliesConvertMapper.convertRoleList(id);
}
@Override
public List<ActSuppliesConvertrole> convertRoleListid(Integer id) {
return actSuppliesConvertMapper.convertRoleListid(id);
}
}
......@@ -72,6 +72,8 @@ public class ActSuppliesRoleDetailServiceImpl implements IActSuppliesRoleDetailS
}
// [{"ce": "0", "re": "0","le":"10" , "ze":"1" ,"ct":"1", "rt": "1", "lt": "10", "zt": "2","ys":"1"}]
String content = String.join(",",filteredList);
String content2 = "["+content+"]";
......
......@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ActSuppliesConvertrole" id="ActSuppliesConvertResult">
<result property="id" column="id" />
<result property="tempId" column="temp_id" />
<result property="templateName" column="template_name"/>
<result property="name" column="name" />
<result property="content" column="content" />
<result property="status" column="status" />
......@@ -16,17 +17,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="ActSuppliesTemplate" id="SuppliesTemplateResult">
<result property="id" column="id" />
<result property="detId" column="det_id" />
<result property="templateName" column="template_name" />
<result property="templateContent" column="template_content" />
<result property="status" column="status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectActSuppliesConvertVo">
select id, temp_id, name, content, status, create_by, create_time, update_by, update_time from act_supplies_convert
</sql>
<select id="selectActSuppliesConvertListTemp" resultMap="SuppliesTemplateResult">
select id, template_name from act_supplies_template where status = 0;
</select>
<select id="selectActSuppliesConvertList" parameterType="ActSuppliesConvertrole" resultMap="ActSuppliesConvertResult">
<include refid="selectActSuppliesConvertVo"/>
<where>
<if test="tempId != null "> and temp_id = #{tempId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="content != null and content != ''"> and content = #{content}</if>
<if test="status != null "> and status = #{status}</if>
select a.id, a.temp_id,b.template_name, a.name, a.content, a.status from act_supplies_convert a,act_supplies_template b
<where>
a.temp_id = b.id
<if test="tempId != null "> and a.temp_id = #{tempId}</if>
<if test="name != null and name != ''"> and a.name like concat('%', #{name}, '%')</if>
<if test="status != null "> and a.status = #{status}</if>
</where>
</select>
......@@ -84,4 +101,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<select id="convertRoleList" parameterType="Integer" resultMap="ActSuppliesConvertResult">
select id, temp_id, name from act_supplies_convert where status = 0 and temp_id = #{id}
</select>
<select id="convertRoleListid" parameterType="Integer" resultMap="ActSuppliesConvertResult">
select id, temp_id, name, content from act_supplies_convert where status = 0 and id = #{id}
</select>
</mapper>
\ No newline at end of file
......@@ -53,9 +53,6 @@
<select id="saveSidsta" parameterType="com.ruoyi.system.domain.ActSuppliesRole" resultMap="ActSuppliesRoleResult">
select id, temp_id, role_name from act_supplies_role where status = 1;
</select>
<!-- <select id="saveOperation" parameterType="ActOperation" resultMap="ActOperationResult">-->
<!-- select id, operation_name, status from act_operation_role where status = 0-->
<!-- </select>-->
<select id="selectActSuppliesRoleDetailList" parameterType="ActSuppliesRoleDetail" resultMap="ActSuppliesRoleDetailResult">
select a.id,a.role_id,a.detail_name,a.detail_content,a.convert_status,a.status,b.role_name,b.id detaId from act_supplies_role_detail a,act_supplies_role b
......@@ -140,4 +137,5 @@
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
......@@ -51,3 +51,28 @@ export function exportConvert(query) {
params: query
})
}
// 通用转换页面查询规则列表
export function convertRoleList(id) {
return request({
url: '/ActSuppliesConvertrole/ActSuppliesConvertrole/convertRoleList/' + id,
method: 'get'
})
}
// 通用转换页面查询规则详情
export function convertRoleListid(id) {
return request({
url: '/ActSuppliesConvertrole/ActSuppliesConvertrole/convertRoleListid/' + id,
method: 'get'
})
}
// 查询模板
export function listTemp() {
return request({
url: '/ActSuppliesConvertrole/ActSuppliesConvertrole/listTemp',
method: 'get',
})
}
<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" filterable
placeholder="请选择您要查看的模板">
<!-- <el-option label="自设的模板名" value="使用空白模板"></el-option>-->
<el-option
v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="规则" prop="rule">
<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.name" :value="iem.id">
</el-option>
</el-select>
</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">
导入
</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 v-if="showMask" class="mask">
<div class="loading-spinner"></div>
</div>
</div>
</template>
<script>
import {getSuppliesTemplate, listSuppliesTemplate} from "@/api/ruoyi-myLuckyexcel/myluckyexcel";
import {convertRoleList, convertRoleListid} from "@/api/ActSuppliesConvert/convert"
/*import luckysheet from 'luckysheet'*/
import LuckyExcel from 'luckyexcel'
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
import {exportExcel} from '../../../../public/exportExcel';
import {v4 as uuidv4} from 'uuid';
var fileName = "新建XLSX工作表"; //定义表名
var rule = [];
var tempId;
var roleId;
export default {
name: "Mymodule",
data() {
return {
showMask: false,
uuid: '',
//弹出页面的表名
from_name: "",
// 是否显示弹出层
dialogVisible: false,
selectedOption: '',
selectedRule: '',
luckysheetData: '',
fileList: [],
disableNextButton: true,
luckyrule: [],
depss: [],
// 表单参数
from: {},
dfrom: {},
// 查询参数
queryParams: {
status: 0
},
};
},
created() {
this.getList();
},
mounted() {
this.init();
fileName = "新建XLSX工作表";
},
methods: {
/** 页面刷新时展示的数据*/
getList() {
listSuppliesTemplate(this.queryParams).then(response => {
this.depss = response.rows;
});
},
/** 下拉选和页面luckysheet绑定 */
handleOptionChange() {
this.selectedRule = '';
this.disableNextButton = this.selectedRule === '';
//根据选中的下拉选项值获取相应的信息
getSuppliesTemplate(this.selectedOption).then(response => {
tempId = this.selectedOption;
console.log(this.uuid);
const sysSupplies = response.rows;
this.luckysheetData = sysSupplies[0].templateContent;
//将接收到的json存到json_data中
//const json_data = response.data;
var json_data = JSON.parse(sysSupplies[0].templateContent);
convertRoleList(this.selectedOption).then(response => {
this.luckyrule = response.rows;
});
let suffixArr = sysSupplies[0].templateName.split('.');
fileName = suffixArr[0];
//luckysheet.destroy()
luckysheet.create({
container: "luckysheet", // Luckysheet 的容器元素 ID
title: fileName, // Excel 文件名
data: json_data, // Excel 数据
showinfobar: false, //是否显示顶部名称栏
lang: 'zh',
});
}).catch(() => {
// 处理错误逻辑,这里是一个空的错误处理函数
this.$message.error('查询失败,发生未知错误!');
});
},
/** 规则下拉选 调佣后端的方法*/
handleRuleChange() {
if (this.selectedOption === '') {
this.selectedRule = '';
this.$message.warning("选择规则前请先选择模板!");
return; // 如果按钮被禁用,提前返回,避免执行下一步操作
}
this.disableNextButton = this.selectedRule === '';
convertRoleListid(this.selectedRule).then(response => {
roleId = this.selectedRule;
rule = response.rows;
});
},
/** 回车事件和保存提交绑定 */
handleEnter(event) {
if (event.keyCode === 13) {
event.preventDefault(); // 阻止默认的回车事件
// 触发确定操作
this.submit_from();
}
},
/** 重置按钮操作 */
resetQuery() {
//刷新下拉选框内容
fileName = "新建XLSX工作表";
this.selectedOption = '';
this.disableNextButton = '';
this.selectedRule = '';
this.luckyrule = [];
//刷新luckysheet表格
this.init();
},
/** Luckyexcel文档 */
init() {
let options = {
container: 'luckysheet', //luckysheet为容器id
title: '',
lang: 'zh',
showinfobar: false,
data: [
{
"name": "sheet1", //工作表名称
"color": "", //工作表颜色
"index": 0, //工作表索引
"status": 1, //激活状态
"order": 0, //工作表的下标
"hide": 0,//是否隐藏
"row": 8, //行数
"column": 10, //列数
"defaultRowHeight": 19, //自定义行高
"defaultColWidth": 73, //自定义列宽
"celldata": [], //初始化使用的单元格数据
"config": {
"merge": {}, //合并单元格
"rowlen": {}, //表格行高
"columnlen": {}, //表格列宽
"rowhidden": {}, //隐藏行
"colhidden": {}, //隐藏列
"borderInfo": {}, //边框
"authority": {}, //工作表保护
},
},
]
}
luckysheet.create(options);
},
/** 导入事件*/
async handleFileChange(evt) {
let exx;
this.showMask = true;
const cons = new Promise((resolve, reject) => {
LuckyExcel.transformExcelToLucky(evt, exportJson => {
exx = exportJson;
resolve(exx);
});
});
try {
const exportJson = await cons;
await this.summary(exportJson);
//console.log('summary 执行完毕');
} catch (Error) {
this.$message({
message: Error.message,
type: "error"
});
console.log(Error.message);
console.log("这里是最外面的地方");
} finally {
// 导入完成后关闭遮罩层
this.showMask = false;
}
},
/** 物料转换汇总到页面*/
summary(exportJson) {
let sysRules;
let value = [];
let data;
//获取规则 sysRulez是物料转换 sysRules是数据汇总规则 13
for (let i = 0; i < rule.length; i++) {
sysRules = JSON.parse(rule[i].content);
}
try {
//获取物料转换的sheet表
data = window.luckysheet.transToData(exportJson.sheets[0].celldata);
} catch (err) {
throw new Error("导入失败,所选文件或规则有误");
}
let map = new Map();
let smallMat = [];
let deps = [];
for (let i =0;i<sysRules.length;i++){
debugger
//判断运算方法/0无运算方法/1加法/2减法/3乘法/4除法/5平均值/6最大值/7最小值
if (sysRules[i].ys ==0){
//判断导入表行列单元格/1行/2列/3单元格
if (sysRules[i].ze==1){
//判断模板表行列单元格/1行/2列/3单元格
if (sysRules[i].zt==1){
for (let j=parseInt(sysRules[i].ce),x=parseInt(sysRules[i].ct);j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++,x++){
luckysheet.setCellValue(parseInt(sysRules[i].rt),x,data[parseInt(sysRules[i].re)][j].v)
}
}else if (sysRules[i].zt==2){
for (let j=parseInt(sysRules[i].ce),x=parseInt(sysRules[i].rt);j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++,x++){
luckysheet.setCellValue(x,parseInt(sysRules[i].ct),data[parseInt(sysRules[i].re)][j].v)
}
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==1){
for (let j=parseInt(sysRules[i].re),x=parseInt(sysRules[i].ct);j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++,x++){
luckysheet.setCellValue(parseInt(sysRules[i].rt),x,data[j][parseInt(sysRules[i].ce)].v)
}
}else if (sysRules[i].zt==2){
for (let j=parseInt(sysRules[i].re),x=parseInt(sysRules[i].rt);j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++,x++){
luckysheet.setCellValue(x,parseInt(sysRules[i].ct),data[j][parseInt(sysRules[i].ce)].v)
}
}
}else if (sysRules[i].ze==3){
if (sysRules[i].zt==1){
for (let x=parseInt(sysRules[i].ct);x<parseInt(sysRules[i].lt)+parseInt(sysRules[i].ct);x++){
luckysheet.setCellValue(parseInt(sysRules[i].rt),x,data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v)
}
}else if (sysRules[i].zt==2){
for (let x=parseInt(sysRules[i].rt);x<parseInt(sysRules[i].lt)+parseInt(sysRules[i].rt);x++){
luckysheet.setCellValue(x,parseInt(sysRules[i].ct),data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v)
}
}else if (sysRules[i].zt==3){
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v)
}
}
}else if (sysRules[i].ys ==2){//减法
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
sum-=parseInt(data[parseInt(sysRules[i].re)][j].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
sum-=parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}else if (sysRules[i].ys ==3){//乘法
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
sum*=parseInt(data[parseInt(sysRules[i].re)][j].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
sum*=parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}else if (sysRules[i].ys ==4){//除法
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
sum/=parseInt(data[parseInt(sysRules[i].re)][j].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
sum/=parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}else if (sysRules[i].ys ==1){//和
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
debugger
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
sum+=parseInt(data[parseInt(sysRules[i].re)][j].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
sum+=parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}else if (sysRules[i].ys==5){//平均值
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
debugger
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
sum+=parseInt(data[parseInt(sysRules[i].re)][j].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum/parseInt(sysRules[i].le));
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
sum+=parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum/parseInt(sysRules[i].le));
}
}
}else if (sysRules[i].ys==6){//最大值
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
debugger
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
if (sum<parseInt(data[parseInt(sysRules[i].re)][j].v)){
sum = parseInt(data[parseInt(sysRules[i].re)][j].v);
}
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
if (sum<parseInt(data[j][parseInt(sysRules[i].ce)].v)){
sum = parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}else if (sysRules[i].ys==7){//最小值
if (sysRules[i].ze==1){
if (sysRules[i].zt==3){
debugger
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].ce)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].ce);j++){
if (sum<parseInt(data[parseInt(sysRules[i].re)][j].v)){
sum = parseInt(data[parseInt(sysRules[i].re)][j].v);
}
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}else if (sysRules[i].ze==2){
if (sysRules[i].zt==3){
let sum=parseInt(data[parseInt(sysRules[i].re)][parseInt(sysRules[i].ce)].v);
for (let j=parseInt(sysRules[i].re)+1;j<parseInt(sysRules[i].le)+parseInt(sysRules[i].re);j++){
if (sum<parseInt(data[j][parseInt(sysRules[i].ce)].v)){
sum = parseInt(data[j][parseInt(sysRules[i].ce)].v);
}
}
luckysheet.setCellValue(parseInt(sysRules[i].rt),parseInt(sysRules[i].ct),sum);
}
}
}
}
//切换到想要的sheet
luckysheet.setSheetActive(0);
},
/** 导出设置 */
handleExport: debounce(function () {
// 处理点击事件
exportExcel(luckysheet.getAllSheets(), fileName)
}, 500), // 设置延迟时间,单位为毫秒
}
// 配置项111
};
// debounce函数定义
function debounce(func, delay) {
let timer;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
func.apply(context, args);
}, delay);
};
}
function getKeyByValue(map, value) {
for (let [key, val] of map) {
if (val === value) {
return key;
}
if (Array.isArray(val) && val.includes(value)) {
return key;
}
}
}
</script>
<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);
}
}
</style>
......@@ -969,6 +969,9 @@ export default {
let vll2=luckysheet.getCellValue(rowws,parseInt(sysRulez[0].ct)+1);
luckysheet.setCellValue(rowws + 1, parseInt(sysRulez[0].ct)+1, vll2);
//输出部门数量金额
luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
......
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