|
@@ -21,7 +21,10 @@
|
|
|
<div class="newService-content-left-top">
|
|
|
<div class="flex head">
|
|
|
<div class="title">账号组列表</div>
|
|
|
- <el-button @click="handleAdd" class="serButton" size="small">新增</el-button>
|
|
|
+ <div>
|
|
|
+ <el-button @click="handleExport" class="serButton" size="small">导出</el-button>
|
|
|
+ <el-button @click="handleAdd" class="serButton" size="small">新增</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="search">
|
|
|
<el-input size="small" placeholder="请输入内容" clearable prefix-icon="el-icon-search" :filter-node-method="filterArrNode" v-model="search">
|
|
@@ -228,6 +231,11 @@ import { listToTree } from '@/utils/validate'
|
|
|
import XLSX from "xlsx";
|
|
|
import { Format } from '@/utils/validate'
|
|
|
import { exportToExcel } from '@/utils/table'
|
|
|
+import { exportJsonToExcel } from '@/utils/Export2Excel.js'
|
|
|
+import {reactive} from "vue";
|
|
|
+// import * as XLSX from 'xlsx'
|
|
|
+import XLSX_STYLE from 'xlsx-style'
|
|
|
+import FileSaver from 'file-saver'
|
|
|
export default {
|
|
|
name: 'NewManageMent',
|
|
|
components: { Dialog },
|
|
@@ -306,7 +314,8 @@ export default {
|
|
|
},
|
|
|
arrTree: [],
|
|
|
treeCheckObj: {},
|
|
|
- groupname:''
|
|
|
+ groupname:'',
|
|
|
+ execList: []
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
@@ -316,6 +325,7 @@ export default {
|
|
|
},
|
|
|
mounted () {
|
|
|
this.getTreeData()
|
|
|
+ this.upgout()
|
|
|
},
|
|
|
computed: {
|
|
|
dataList () {
|
|
@@ -329,6 +339,12 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ async upgout () {
|
|
|
+ const { code, returnData } = await this.getQueryListAuth('2003115')
|
|
|
+ if (code == 0) {
|
|
|
+ this.execList = returnData
|
|
|
+ }
|
|
|
+ },
|
|
|
async getTreeData () {
|
|
|
const { code, returnData } = await this.getQueryListAuth(this.queryId)
|
|
|
if (code == 0) {
|
|
@@ -671,6 +687,137 @@ export default {
|
|
|
2000,
|
|
|
{ trailing: false }
|
|
|
),
|
|
|
+ handleExport() {
|
|
|
+
|
|
|
+ var arr = [];
|
|
|
+ let mJson = JSON.parse(JSON.stringify(this.execList));
|
|
|
+
|
|
|
+ // ============ 【添加表列的标头】
|
|
|
+
|
|
|
+ let TableHead = ['登录账号','用户名','所属用户组','用户状态','登出时间','登陆时间'];
|
|
|
+
|
|
|
+ // 指定导出字段
|
|
|
+ let mField = "登录账号,用户名,所属用户组,用户状态,登出时间,登陆时间";
|
|
|
+
|
|
|
+ // ======================= 【处理mJson数据】
|
|
|
+
|
|
|
+ let mFieldsArray = mField.split(','); // 将 mField 字符串转换为以逗号分隔的数组
|
|
|
+
|
|
|
+ // 遍历 mJson 数组中的每个对象
|
|
|
+ for (let i = 0; i < mJson.length; i++) {
|
|
|
+ let newObj = {}; // 创建一个新对象存储重新排序后的键名和键值
|
|
|
+
|
|
|
+ // 遍历 mFieldsArray 数组中的每个字段
|
|
|
+ for (let j = 0; j < mFieldsArray.length; j++) {
|
|
|
+ let field = mFieldsArray[j];
|
|
|
+ if (mJson[i].hasOwnProperty(field)) {
|
|
|
+ if (field == "accountTime") {
|
|
|
+ newObj[field] = mJson[i][field].substring(0, 10); // 将原对象中的对应键名和键值赋给新对象
|
|
|
+ }
|
|
|
+ else if(field == "goodsStatus")
|
|
|
+ {
|
|
|
+
|
|
|
+ switch (mJson[i][field]) {
|
|
|
+
|
|
|
+ case '0':
|
|
|
+ newObj[field] = "一级";
|
|
|
+ break;
|
|
|
+ case '1':
|
|
|
+ newObj[field] = "二级";
|
|
|
+ break;
|
|
|
+ case '2':
|
|
|
+ newObj[field] = "三级";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ newObj[field] = "四级";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ newObj[field] = mJson[i][field]; // 将原对象中的对应键名和键值赋给新对象
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ mJson[i] = newObj; // 将新对象替换原对象
|
|
|
+}
|
|
|
+
|
|
|
+ console.log(mJson);
|
|
|
+// ============ 【添加表列的标头】
|
|
|
+
|
|
|
+// 创建一个空的二维数组
|
|
|
+var arr = [];
|
|
|
+// 使用JSON.parse方法把json变量转换成一个对象数组
|
|
|
+var objArr = mJson;
|
|
|
+// 遍历对象数组,把每个对象的属性值放入一个一维数组中,然后把这个一维数组添加到二维数组中
|
|
|
+for(var i = 0; i<objArr.length; i++) {
|
|
|
+// 创建一个空的一维数组
|
|
|
+var row = []; // 获取当前对象
|
|
|
+var obj = objArr[i]; // 遍历对象的属性,把属性值放入一维数组中
|
|
|
+
|
|
|
+for (var key in obj) {
|
|
|
+// console.log("### key =" + key + " ###");
|
|
|
+if (key == "CreatDate" || key == "Id") { // 排除字段
|
|
|
+} else {
|
|
|
+ row.push(obj[key]);
|
|
|
+}
|
|
|
+}
|
|
|
+// 把一维数组添加到二维数组中
|
|
|
+arr.push(row);
|
|
|
+}
|
|
|
+
|
|
|
+arr.unshift(TableHead); // 添加列标头名
|
|
|
+console.log("######################");
|
|
|
+console.log(arr);
|
|
|
+
|
|
|
+// ============ 【添加表格标题行】
|
|
|
+let TableTitle = ["用户列表"]; // 表标题内容
|
|
|
+// 计算合并标题单元格
|
|
|
+let ColCount = TableHead.length;
|
|
|
+let ColLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
+let ColIndex = ColCount - 1;
|
|
|
+let m_TitleMerges = "A1:" + ColLetter.charAt(ColIndex) + "1";
|
|
|
+const TitleMerges = [];
|
|
|
+TitleMerges.push(m_TitleMerges); //["A1:E1"]
|
|
|
+// let TitleMerges=["A1:E1"];
|
|
|
+// ============ 【设置列宽】
|
|
|
+let wscols = [
|
|
|
+{ wch: 8 }, // 编号
|
|
|
+{ wch: 14 }, // 编码1
|
|
|
+{ wch: 12 }, // 分类
|
|
|
+{ wch: 20 }, // 名称
|
|
|
+{ wch: 12 }, // 品牌
|
|
|
+{ wch: 15 }, // 规格
|
|
|
+{ wch: 5 }, // 单位
|
|
|
+{ wch: 15 }, // 区域
|
|
|
+{ wch: 8 }, // 方式
|
|
|
+{ wch: 10 }, // 日期
|
|
|
+{ wch: 8 }, // 状态
|
|
|
+{ wch: 8 }, // 使用者
|
|
|
+{ wch: 15 }, // 部门
|
|
|
+{ wch: 8 }, // 者
|
|
|
+{ wch: 15 }, //
|
|
|
+];
|
|
|
+
|
|
|
+// alert("开始导出");
|
|
|
+
|
|
|
+console.log(arr);
|
|
|
+
|
|
|
+// 开始导出
|
|
|
+exportJsonToExcel({
|
|
|
+// 这里用到了Export2Excel.js
|
|
|
+header: TableTitle, // 表标题
|
|
|
+data: arr, // 实际数据从第三行开始
|
|
|
+filename: "明细表", // 文件名
|
|
|
+merges: TitleMerges, // 合并A1到C1单元格作为标题行
|
|
|
+bookType: 'xls', // 生成的文件类型
|
|
|
+autoWidth: true, // 不自动调整列宽
|
|
|
+XlsWidth: wscols
|
|
|
+});
|
|
|
+ // alert("ok")
|
|
|
+ // exportExcelGoods()
|
|
|
+ // this.$message.success('导出成功')
|
|
|
+},
|
|
|
}
|
|
|
}
|
|
|
</script>
|