Files
hb_pqs_web/src/views/components/templateFile.vue

1253 lines
46 KiB
Vue
Raw Normal View History

2025-01-09 19:02:44 +08:00
<template>
<div class="templateBox">
<div style="flex: 1">
<!-- @mouseenter="enter" @mouseleave="out" -->
<!-- <div v-show="flag" :style="!editShow ? ' visibility: hidden;' : ''">
<div id="menu" v-show="menusStyle">
<div class="menu__item" @click="unitBinding">绑定参数单位</div>
<div class="menu__item" @click="binding">绑定参数指标</div>
</div>
</div> -->
<!-- <div id="cascader" class="cascader" :style="cascader?' visibility: hidden;':''"> 123</div> height: ${vh - 55}px; -->
<div class="box" :style="'height:' + vh + 'px;'">
<div class="elButton pd10">
<!-- <el-button @click="getData">获取数据</el-button> -->
<el-upload
name="file"
ref="upload"
action=" "
:limit="1"
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
:file-list="fileList"
:before-upload="beforeUpload"
>
<el-button slot="trigger" icon="el-icon-upload2" size="small" type="primary">
导入excel
</el-button>
</el-upload>
<el-button
@click="downloadExcel"
class="buttons"
size="small"
type="primary"
icon="el-icon-download"
>
导出excel
</el-button>
<el-button
v-if="!flag"
slot="trigger"
size="small"
type="primary"
style="margin-left: auto"
@click="$emit('close')"
>
<svg-icon class="error" icon-class="back" />
返回
</el-button>
</div>
<div
id="luckysheet"
style="width: 100%; padding: 0; margin: 0"
:style="`height:95%;cursor: pointer`"
></div>
</div>
</div>
<div v-if="flag" class="templateRight">
<el-button
slot="trigger"
size="small"
type="primary"
style="margin-left: 220px; margin-bottom: 10px"
@click="dialogFormVisible = true"
icon="el-icon-check"
>
保存
</el-button>
<el-button slot="trigger" size="small" type="primary" @click="$emit('close')">
<svg-icon class="error" icon-class="back" />
返回
</el-button>
<!-- <el-form label-width="100px"> -->
<!-- <el-form-item label="选择模板:">
<el-select
v-show="editShow"
@change="Templates"
v-model="Template"
placeholder="请选择模板"
>
<el-option
v-for="item in TemplateList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="Sheet名称:">
<el-input
v-show="editShow"
placeholder="请输入表格名称"
v-model.trim="input"
clearable
@blur="blur"
@keyup.enter.native="keyup"
>
</el-input>
</el-form-item> -->
<!-- <el-form-item label="绑定单位:"> -->
<!-- :show-all-levels="false" -->
<!-- </el-form-item>
<el-form-item label="绑定指标:"> -->
<!-- :show-all-levels="false" -->
<!-- </el-form-item> -->
<!-- </el-form> -->
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="数据单位" name="first">
<el-form label-width="100px" :model="formdata">
<el-form-item label="绑定数据单位:">
<el-cascader
style="width: 100%"
:popper-append-to-body="false"
ref="cascaderUnit"
placeholder="请选择数据单位"
v-model="value1"
:options="unitList"
filterable
@change="unitHandleChange"
:props="{
value: 'code',
label: 'name'
}"
></el-cascader>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="数据指标" name="second">
<el-form label-width="100px">
<el-form-item label="绑定数据指标:">
<el-cascader
style="width: 100%"
:popper-append-to-body="false"
ref="cascaderUnit"
placeholder="请选择数据指标"
v-model="value"
:options="options"
filterable
@change="handleChange"
:props="{
value: 'name',
label: 'showName'
}"
></el-cascader>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="合格率判定" name="third">
<el-form label-width="100px">
<el-form-item label="绑定合格率:">
<el-cascader
style="width: 100%"
:popper-append-to-body="false"
ref="cascaderhgl"
placeholder="请选择数据合格率"
v-model="valuehgl"
:options="optionshgl"
filterable
@change="handleChangehgl"
:props="{
value: 'name',
label: 'showName'
}"
></el-cascader>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="监测点台账指标" name="fourth">
<el-form label-width="100px">
<el-form-item label="绑定监测点:">
<el-cascader
style="width: 100%"
:popper-append-to-body="false"
ref="cascaderjcd"
placeholder="请选择监测点台账"
v-model="valuejcd"
:options="optionsjcd"
filterable
@change="handleChangejcd"
:props="{
value: 'name',
label: 'showName'
}"
></el-cascader>
</el-form-item>
<!-- <el-form-item label="绑定国标限值:">
<el-cascader style="width:100%"
:popper-append-to-body="false"
ref="cascaderxz"
placeholder="请选择国标限值"
v-model="valuexz"
:options="optionsxz"
filterable
:props="{
value: 'name',
label: 'showName',
}"
></el-cascader>
</el-form-item> -->
</el-form>
</el-tab-pane>
</el-tabs>
</div>
<el-dialog
:close-on-click-modal="false"
:title="title"
:visible.sync="dialogFormVisible"
width="30%"
:before-close="closeDialog"
>
<el-row :gutter="10">
<el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm">
<el-form-item label="模板名称:" prop="templateName" style="margin-bottom: 20px">
<el-input placeholder="模板名称" v-model="formdata.templateName" style="width: 100%"></el-input>
</el-form-item>
<el-form-item
class="top"
label="部门:"
prop="valueTitle"
v-if="title != '修改报表模板'"
style="margin-bottom: 20px"
>
<el-cascader
placeholder="请选择部门"
style="width: 100%"
v-model="formdata.valueTitle"
:options="formdata.options"
:show-all-levels="false"
collapse-tags
:props="{
multiple: true,
value: 'id',
label: 'name'
}"
></el-cascader>
</el-form-item>
<el-form-item class="top" label="模板类型:" prop="reportType" style="margin-bottom: 20px">
<el-select style="width: 100%" v-model="formdata.reportType" placeholder="请选择模板类型">
<el-option
v-for="item in classificationData"
:key="item.id"
:label="item.label"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item class="top" label="报表类型:" prop="reportForm" style="margin-bottom: 20px">
<el-select style="width: 100%" v-model="formdata.reportForm" placeholder="请选择报表类型">
<el-option
v-for="item in reportFormList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-row></el-row>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="closeDialog()"> </el-button>
<el-button type="primary" @click="preservation('ruleForm')"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import LuckyExcel from 'luckyexcel'
import { dicData } from '@/assets/commjs/dictypeData'
import jquery from 'jquery'
import { exportExcel } from '@/views/components/luckyexcel/export'
import { getExcel, getIndex, codeDicTree } from '@/api/luckyexcel.js'
import {
addTemplate,
dateTemplateup,
getCustomReportTemplateById,
viewCustomReportTemplateById,
targetLimitChooseTree,
terminalChooseTree
} from '@/api/templateConfiguration'
import { pvTree } from '@/api/AccountOperation'
export default {
components: {},
props: ['title', 'id', 'valList'],
data() {
return {
activeName: 'first',
zoom: '', //图表焦点校验
flag: true,
classificationData: [
{
label: '电能质量报表类型',
id: '1'
},
{
label: '用能报表类型',
id: '2'
}
],
unitList: [],
options: [],
valuehgl: '',
optionshgl: [],
valuejcd: '',
optionsjcd: [],
valuexz: '',
optionsxz: [],
formdata: {
value: '',
props: '',
valueTitle: '',
accordion: false,
defaultExpandedKey: [],
reportType: '',
reportForm: '',
//区域
options: [],
valuehgl: '',
optionshgl: [],
valuejcd: '',
optionsjcd: [],
valuexz: '',
optionsxz: [],
default: {
value: 'id',
children: 'children',
label: 'name'
},
templateName: ''
},
reportFormList: [
{
value: '1',
label: '分析报表'
},
{
value: '2',
label: '统计报表'
},
{
value: '3',
label: '自定义报表'
}
],
rules: {
valueTitle: [
{
required: true,
message: '内容不能为空',
trigger: 'blur'
}
],
templateName: [
{
required: true,
message: '内容不能为空',
trigger: 'blur'
}
],
reportType: [
{
required: true,
message: '内容不能为空',
trigger: 'change'
}
],
reportForm: [
{
required: true,
message: '内容不能为空',
trigger: 'change'
}
]
},
currentYearProportion: '',
vh: undefined,
fileList: [],
activeName: 'first',
menusStyle: false,
cascader: true,
unit: true,
options: [],
dialogFormVisible: false,
Template: '', //模板数据
zoom: null,
TemplateList: [
{
value: '选项1',
label: '模板1'
},
{
value: '选项2',
label: '模板2'
},
{
value: '选项3',
label: '模板3'
}
],
name: '', //表格查询数据
editShow: true, //编辑控制按钮
value: [],
value1: [],
input: '', //自定义表格头
showtoolbar: true, //富文本框头部显示
cellRightClickConfig: {
copy: true, // 复制
copyAs: true, // 复制为
paste: true, // 粘贴
insertRow: true, // 插入行
insertColumn: true, // 插入列
deleteRow: true, // 删除选中行
deleteColumn: true, // 删除选中列
deleteCell: true, // 删除单元格
hideRow: true, // 隐藏选中行和显示选中行
hideColumn: true, // 隐藏选中列和显示选中列
rowHeight: true, // 行高
columnWidth: true, // 列宽
clear: true, // 清除内容
matrix: true, // 矩阵操作选区
sort: true, // 排序选区
filter: true, // 筛选选区
chart: true, // 图表生成
image: true, // 插入图片
link: true, // 插入链接
data: true, // 数据验证
cellFormat: true // 设置单元格格式
}, //控制右键菜单
list: [
{
name: 'Cell',
index: 0,
defaultRowHeight: 27,
defaultColWidth: 105,
chart: [] //图表配置
}
],
replace: []
}
},
created() {
this.getIndexs()
this.gettreedata()
this.getdievs()
this.getclassificationData()
},
mounted() {
this.zoom = 1 / document.body.style.zoom
window.addEventListener('resize', () => {
this.zoom = 1 / document.body.style.zoom
})
document.getElementsByClassName('el-cascader-panel')[0].style.maxHeight = '400px'
this.currentYearProportion = this.$route.params
// console.log(this.currentYearProportion instanceof Array,this.currentYearProportion,'this.currentYearProportion')
// if(this.currentYearProportion instanceof Array){
// this.edit()
// }
for (const key in this.currentYearProportion) {
if (key == 'currentYearProportion') {
this.edit()
}
}
this.getExcels()
let _this = this
this.setHeight()
window.addEventListener('resize', this.setHeight)
// 右击
window.oncontextmenu = function (e) {
//取消默认的浏览器自带右键
e.preventDefault()
//获取我们自定义的右键菜单
let menu = document.getElementById('menu')
let menuItem = document.getElementById('luckysheet-cols-rows-data').clientWidth
let menus = document.getElementById('luckysheet-rightclick-menu')
//根据事件对象中鼠标点击的位置,进行定位
menu.style.left = menus.offsetLeft - 209 + 'px'
menu.style.top = menus.offsetTop - 8 + 'px'
menu.style.width = menuItem + 'px'
let res = document.getElementById('luckysheet-rightclick-menu').style.display
if (res == 'block') {
_this.menusStyle = true
} else {
_this.menusStyle = false
}
}
// 左击
jquery(document).ready(function () {
if (document.getElementById('luckysheet-rightclick-menu') != null) {
jquery(document).click(function () {
// let res = document.getElementById("luckysheet-rightclick-menu").style.display;
// if (res == "block") {
// _this.menusStyle = true;
// _this.binding()
// _this.unitBinding()
// } else {
// _this.menusStyle = false;
// _this.binding()
// _this.unitBinding()
// }
if (_this.activeName == 'first') {
_this.unitBinding()
}
if (_this.activeName == 'second') {
_this.binding()
}
})
} else {
jquery(document).click(function () {
if (_this.activeName == 'first') {
_this.unitBinding()
}
if (_this.activeName == 'second') {
_this.binding()
}
})
}
})
window.addEventListener('dblclick', function () {
// alert('双击了')
var donm = document.getElementsByClassName('luckysheet-input-box')
//donm.style.border = 'red 2px solid'
// console.log('+++++++++++++++',donm)
})
},
beforeDestroy() {
window.removeEventListener('resize', this.setHeight)
},
methods: {
setHeight() {
this.vh = window.sessionStorage.getItem('appheight') - 20
},
closeDialog() {
this.dialogFormVisible = false
this.resetForm()
},
// 表单重置
resetForm() {
if (this.$refs['ruleForm']) {
this.$refs['ruleForm'].resetFields()
}
},
handleClick(tab, event) {
//console.log(tab, event);
this.activeName = tab.name
},
// 获取指标参数
async getIndexs() {
codeDicTree({
code: 'Device_Unit'
}).then(res => {
this.unitList = this.getTreeData(res.data)
})
let { data } = await getIndex()
// console.log(data, "aaaa");
// data[50].children[47].children[0].name='AAA1'
this.options = data
pvTree().then(res => {
// console.log(res);
if (res.code == 'A0000') {
this.formdata.options = this.getTreeData(res.data)
}
})
},
async gettreedata() {
let { data } = await targetLimitChooseTree()
this.optionshgl = data
},
async getdievs() {
let { data } = await terminalChooseTree()
this.optionsjcd = data
},
getTreeData(data) {
// 循环遍历json数据
for (var i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// children若为空数组则将children设为undefined
data[i].children = undefined
} else {
this.getTreeData(data[i].children)
}
}
return data
},
// 获取 数据
async getExcels() {
let _this = this
if (this.title == '修改报表模板') {
const { data } = await getCustomReportTemplateById({ id: this.id })
// await jquery.getJSON(data.content, null, function (list) {
// _this.list = list;
// });
viewCustomReportTemplateById({ id: this.id }).then(Response => {
_this.list = Response
this.edit()
})
// eval(data.valueTitle).forEach((item) => {
// console.log(123, item[item.length - 1] == this.valList.deptId);
// if (item[item.length - 1] == this.valList.deptId)
// this.formdata.valueTitle = [item];
// return;
// });
this.formdata.templateName = data.name
this.formdata.createby = data.createby
this.formdata.deptId = data.deptId
this.formdata.reportType = data.reportType
this.formdata.reportForm = data.reportForm
this.formdata.valueTitle = eval(data.valueTitle)
} else if (this.title == '模板内容') {
this.flag = false
this.showtoolbar = false
this.cellRightClickConfig = {
copy: false, // 复制
copyAs: false, // 复制为
paste: false, // 粘贴
insertRow: false, // 插入行
insertColumn: false, // 插入列
deleteRow: false, // 删除选中行
deleteColumn: false, // 删除选中列
deleteCell: false, // 删除单元格
hideRow: false, // 隐藏选中行和显示选中行
hideColumn: false, // 隐藏选中列和显示选中列
rowHeight: false, // 行高
columnWidth: false, // 列宽
clear: false, // 清除内容
matrix: false, // 矩阵操作选区
sort: false, // 排序选区
filter: false, // 筛选选区
chart: false, // 图表生成
image: false, // 插入图片
link: false, // 插入链接
data: false, // 数据验证
cellFormat: false // 设置单元格格式
}
// const { data } = await getCustomReportTemplateById({ id: this.id });
// await jquery.getJSON(data.content, null, function (list) {
// _this.list = list;
// });
viewCustomReportTemplateById({ id: this.id }).then(Response => {
_this.list = Response
this.edit()
})
}
setTimeout(() => {
// this.init();
this.edit()
}, 0)
},
// 初始化插件
init() {
let options = {
container: 'luckysheet', //luckysheet为容器id
title: '',
lang: 'zh',
showinfobar: false,
cellRightClickConfig: this.cellRightClickConfig,
showtoolbar: this.showtoolbar,
// column:8,
// row:7,
showtoolbarConfig: {
textRotateMode: false // '文本旋转方式'
},
data: this.list
}
luckysheet.create(options)
},
beforeUpload(file) {
//console.log("file", file);
let _this = this
// // let suffix = this.getSuffix(file.name);
// if (suffix !== "xlsx") {
// this.$message.error("文件格式只能是.xlsx");
// return false;
// }
luckysheet.destroy() // 先销毁当前容器
LuckyExcel.transformExcelToLucky(file, function (exportJson, luckysheetfile) {
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
this.$message.warning('读取excel文件内容失败,目前不支持xls文件!')
return
}
exportJson.sheets.forEach(item => {
// item.celldata = []
// item.data = []
item.celldata.forEach(k => {
k.v.ct.s ? (k.v.v = k.v.ct.s[0].v) : ''
k.v.ct.s ? (k.v.m = k.v.ct.s[0].v) : ''
})
})
let options = exportJson.sheets
// console.log(`000`, exportJson.sheets);
luckysheet.create({
// container: "luckysheet", //luckysheet is the container id
// showinfobar: false,
// data: exportJson.sheets,
// title: exportJson.info.name,
// userInfo: exportJson.info.name.creator,
container: 'luckysheet', //luckysheet为容器id
title: exportJson.info.name,
lang: 'zh',
showinfobar: false,
cellRightClickConfig: _this.cellRightClickConfig,
showtoolbar: _this.showtoolbar,
// column:8,
// row:7,
showtoolbarConfig: {
textRotateMode: false // '文本旋转方式'
},
data: options //exportJson.sheets,
})
})
},
getFlie() {
//请求接口 获取参数
downloadPDF({ filePath: 'xxxx-7388ec99358e.xlsx' }).then(res => {
//这里需要将获取到的base64 转成 file
let filetext = this.changefile(res.data, 'spling.xlsx')
// console.log(filetext);
//主要功能代码
luckysheet.destroy() // 先销毁当前容器
LuckyExcel.transformExcelToLucky(filetext, function (exportJson, luckysheetfile) {
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
this.$message.warning('读取excel文件内容失败,目前不支持xls文件!')
return
}
luckysheet.create({
container: 'luckysheet', //luckysheet is the container id
showinfobar: false,
data: exportJson.sheets,
title: exportJson.info.name,
userInfo: exportJson.info.name.creator
})
})
})
},
changefile(dataurl, filename) {
var bstr = window.atob(dataurl)
var n = bstr.length
var u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], filename, {
type: 'application/vnd.ms-excel'
})
},
// 获取当前表格信息
getData() {
// luckysheet.setWorkbookName('测试' )
// luckysheet.setRangeShow({row:[3,4]})
// 获取表格显示数据
// console.log(luckysheet.getAllSheets());
// console.log(JSON.stringify(luckysheet.getAllSheets()));
},
// 下载表格
downloadExcel() {
// const value = this.selected;;
//console.log("数据对比", JSON.stringify(luckysheet.getAllSheets()))
exportExcel(luckysheet.getAllSheets(), '下载')
// testaaa();
},
// 绑定参数指标
binding() {
// children
this.cascader = false
this.menusStyle = false
this.unit = true
this.value1 = []
let data = luckysheet.getRange()
if (luckysheet.getRangeValue(data[0].column[0], data[0].row[0])[0][0] == null) {
// console.log("cesi");
} else {
if ('tr' in luckysheet.getRangeValue(data[0].column[0], data[0].row[0])[0][0]) {
let x = data[0].column[0]
let y = data[0].row[0]
// console.log(`==`,luckysheet.getRangeValue(x, y));
this.value = luckysheet.getRangeValue(x, y)[0][0].tr
} else {
}
}
},
// 绑定单位
unitBinding() {
this.cascader = true
this.unit = false
this.value = []
let data = luckysheet.getRange()
if (luckysheet.getRangeValue(data[0].column[0], data[0].row[0])[0][0] == null) {
// console.log("cesi");
} else {
if ('tr' in luckysheet.getRangeValue(data[0].column[0], data[0].row[0])[0][0]) {
let x = data[0].column[0]
let y = data[0].row[0]
// console.log(`==`,luckysheet.getRangeValue(x, y));
this.value1 = luckysheet.getRangeValue(x, y)[0][0].tr
}
}
},
// 自定义表头
blur() {
if (this.input == '') {
return
} else {
luckysheet.setSheetName(this.input)
// this.input = "";
}
},
keyup() {
if (this.input == '') {
return
} else {
luckysheet.setSheetName(this.input)
this.input = ''
}
},
//编辑 表格
edit() {
luckysheet.destroy() // 先销毁当前容器
this.editShow = true
// this.cellRightClickConfig = {};
this.init()
},
Templates() {
luckysheet.destroy() // 先销毁当前容器
this.editShow = true
// this.cellRightClickConfig = {};
this.getExcels()
},
// 切换选项
handleNodeClick(data) {
this.formdata.deptId = data.id
this.$refs.selectTree1.blur()
this.formdata.valueTitle = data.name
this.formdata.defaultExpandedKey = []
},
// //表格保存
preservation(formName) {
// let userStr = JSON.stringify(luckysheet.getAllSheets());
// let blob = new Blob([userStr], {
// type: "application/json;charset=UTF-8",
// });
// var files = new window.File([blob], "content.json", {
// type: "application/json;charset=UTF-8",
// });
// var params = new FormData();
// params.append("fileContent", files);
// params.append("name", this.formdata.templateName);
// params.append("reportType", this.formdata.reportType);
console.log('🚀 ~ preservation ~ luckysheet.getAllSheets():', luckysheet.getAllSheets())
this.$refs[formName].validate(valid => {
if (valid) {
let data = luckysheet.getAllSheets()
let list = []
console.log("🚀 ~ preservation ~ this.formdata.valueTitle:", this.formdata.valueTitle)
if (this.formdata.valueTitle) {
this.formdata.valueTitle.forEach(item => {
list.push(item[item.length - 1])
})
}
//console.log('保存存入格式',JSON.stringify(data));
let userStr = JSON.stringify(luckysheet.getAllSheets())
let blob = new Blob([userStr], {
type: 'application/json;charset=UTF-8'
})
const files = new window.File([blob], 'content.json', {
type: 'application/json;charset=UTF-8'
})
let params = new FormData()
params.append('fileContent', files)
params.append('deptId', list)
params.append('name', this.formdata.templateName)
params.append('reportType', this.formdata.reportType)
params.append('reportForm', this.formdata.reportForm)
params.append('valueTitle', this.arrToStr(this.formdata.valueTitle))
// let params = {
// deptId: list,
// content: files,
// name: this.formdata.templateName,
// reportType: this.formdata.reportType,
// valueTitle: this.arrToStr(this.formdata.valueTitle),
// };
if (this.title == '新增报表模板') {
addTemplate(params).then(res => {
if (res != undefined && res.code == 'A0000') {
this.$message({
message: res.message,
type: 'success'
})
this.$emit('close')
}
})
} else if (this.title == '修改报表模板') {
params.append('id', this.id)
dateTemplateup(params).then(res => {
if (res != undefined && res.code == 'A0000') {
this.$emit('close')
this.$message({
message: res.message,
type: 'success'
})
}
})
}
} else {
// console.log("error submit!!");
return false
}
})
},
// 二维数组转换
arrToStr(objarr) {
var typeNO = objarr.length
var tree = '['
for (var i = 0; i < typeNO; i++) {
tree += '['
for (let v = 0; v < objarr[i].length; v++) {
tree += "'" + objarr[i][v] + "',"
}
tree += ']'
if (i < typeNO - 1) {
tree += ','
}
}
tree += ']'
return tree
},
// 鼠标经过
enter() {
this.cascader = false
let menu = document.getElementById('cascader')
let menus = document.getElementById('luckysheet-rightclick-menu')
//根据事件对象中鼠标点击的位置,进行定位
menu.style.left = menus.offsetLeft - 50 + 'px'
menu.style.top = menus.offsetTop + 475 + 'px'
},
// 鼠标离开
out() {
this.cascader = true
},
handleChange(e) {
// console.log(`12213===123`, this.options);
let flag = null
this.options.forEach(item => {
if (item.name == e[0]) {
flag = item.flag
}
})
this.cascader = true
const checkedNodes = this.$refs['cascaderUnit'].getCheckedNodes()
// console.log(checkedNodes, "checknode");
// console.log(checkedNodes[0].data.value); // 获取当前点击的节点
// console.log(checkedNodes[0].data.label); // 获取当前点击的节点的label
// console.log(checkedNodes[0].pathLabels); // 获取由 label 组成的数组
let data = luckysheet.getRange()
let value = luckysheet.getCellValue(data[0].column[0], data[0].row[0])
let list = ''
for (let i = 1; i < e.length - 1; i++) {
list = list + e[i] + '#'
}
if (flag == 1) {
list = '$' + list + e[e.length - 1] + '$'
} else {
list = '$' + e[0] + '#' + list + e[e.length - 1] + '$'
}
luckysheet.setCellValue(
data[0].row[0],
data[0].column[0],
{
v: e[e.length - 1],
tr: e
}
// checkedNodes[0].data.label
)
// console.log(luckysheet.getAllSheets()[0]);
this.value = []
},
unitHandleChange(e) {
// console.log(`12213===123`, this.options);
let flag = null
this.options.forEach(item => {
if (item.name == e[0]) {
flag = item.flag
}
})
this.unit = true
const checkedNodes = this.$refs['cascaderUnit'].getCheckedNodes()
// console.log(checkedNodes, "checknode");
// console.log(checkedNodes[0].data.value); // 获取当前点击的节点
// console.log(checkedNodes[0].data.label); // 获取当前点击的节点的label
// console.log(checkedNodes[0].pathLabels); // 获取由 label 组成的数组
let data = luckysheet.getRange()
let list = ''
for (let i = 1; i < e.length - 1; i++) {
list = list + e[i] + '#'
}
if (flag == 1) {
list = '@' + list + e[e.length - 1] + '@'
} else {
list = '@' + e[0] + '#' + list + e[e.length - 1] + '@'
}
luckysheet.setCellValue(
data[0].row[0],
data[0].column[0],
{
v: e[e.length - 1],
tr: e
}
// checkedNodes[0].data.label
)
// console.log(luckysheet.getAllSheets()[0]);
this.value1 = []
},
handleChangehgl(e) {
// console.log(`12213===123`, this.options);
let flag = null
this.optionshgl.forEach(item => {
if (item.name == e[0]) {
flag = item.flag
}
})
this.cascader = true
const checkedNodes = this.$refs['cascaderhgl'].getCheckedNodes()
// console.log(checkedNodes, "checknode");
// console.log(checkedNodes[0].data.value); // 获取当前点击的节点
// console.log(checkedNodes[0].data.label); // 获取当前点击的节点的label
// console.log(checkedNodes[0].pathLabels); // 获取由 label 组成的数组
let data = luckysheet.getRange()
let value = luckysheet.getCellValue(data[0].column[0], data[0].row[0])
let list = ''
for (let i = 1; i < e.length - 1; i++) {
list = list + e[i] + '#'
}
if (flag == 1) {
list = '$' + list + e[e.length - 1] + '$'
} else {
list = '$' + e[0] + '#' + list + e[e.length - 1] + '$'
}
luckysheet.setCellValue(
data[0].row[0],
data[0].column[0],
{
v: e[e.length - 1],
tr: e
}
// checkedNodes[0].data.label
)
// console.log(luckysheet.getAllSheets()[0]);
this.valuehgl = ''
},
handleChangejcd(e) {
// console.log(`12213===123`, this.options);
let flag = null
this.optionsjcd.forEach(item => {
if (item.name == e[0]) {
flag = item.flag
}
})
this.cascader = true
const checkedNodes = this.$refs['cascaderjcd'].getCheckedNodes()
// console.log(checkedNodes, "checknode");
// console.log(checkedNodes[0].data.value); // 获取当前点击的节点
// console.log(checkedNodes[0].data.label); // 获取当前点击的节点的label
// console.log(checkedNodes[0].pathLabels); // 获取由 label 组成的数组
let data = luckysheet.getRange()
let value = luckysheet.getCellValue(data[0].column[0], data[0].row[0])
let list = ''
for (let i = 1; i < e.length - 1; i++) {
list = list + e[i] + '#'
}
if (flag == 1) {
list = '$' + list + e[e.length - 1] + '$'
} else {
list = '$' + e[0] + '#' + list + e[e.length - 1] + '$'
}
luckysheet.setCellValue(
data[0].row[0],
data[0].column[0],
{
v: e[e.length - 1],
tr: e
}
// checkedNodes[0].data.label
)
// console.log(luckysheet.getAllSheets()[0]);
this.valuejcd = []
},
//获取统计类型
getclassificationData() {
// var code = "Report_Type";
// this.classificationData = dicData(code, ["Load_Type"]);
// console.log(`123`, this.classificationData);
}
},
watch: {
// menusStyle(e) {
// if (e == "block") {
// this.menusStyleShow = false;
// } else {
// this.menusStyleShow = true;
// }
// },
},
beforeDestroy() {
window.luckysheet.destroy()
}
}
</script>
<style lang="less" scoped>
@import url('../../styles/comStyle.less');
::v-deep .el-cascader-menu__list {
max-height: 500px;
}
::v-deep .el-table .cell {
text-align: center;
}
.box {
// border: 1px solid #000;
box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
.elButton {
display: flex;
}
cursor: pointer;
}
#menu {
position: absolute;
z-index: 999999999;
padding: 1px 6em 1px 20px;
padding-right: 10px;
padding-left: 8px;
margin: 0;
color: #333;
text-align: left;
white-space: nowrap;
vertical-align: middle;
list-style: none;
cursor: pointer;
background-color: #fff;
user-select: none;
}
.menu__item {
position: relative;
padding: 6px 15px 6px 20px;
margin: 0;
font-size: 13px;
color: #333;
white-space: nowrap;
list-style: none;
cursor: pointer;
user-select: none;
}
.menu__item:hover {
background: #efefef;
}
.cascader {
position: absolute;
z-index: 9999;
width: 200px;
height: 100px;
background-color: #fff;
box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
}
.input {
width: 200px;
margin-right: 15px;
margin-left: 15px;
}
.buttons {
margin-right: 15px;
margin-left: 15px;
}
::v-deepinput::-webkit-input-placeholder {
color: #353535;
}
.templateBox {
display: flex;
.templateRight {
width: 400px;
padding: 0 10px;
}
}
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
height: auto;
max-height: 1000px;
padding: 0;
overflow: hidden;
overflow-y: hidden;
}
.el-select-dropdown__item.selected {
font-weight: normal;
// border: #333 2px solid;
}
// ::v-deep .luckysheet-input-box {
// z-index: 0 !important;
// }
</style>