From 28303e4c5ff8691a8de8dba4612973ff0bb547b7 Mon Sep 17 00:00:00 2001
From: Fanzink <460995166@qq.com>
Date: Wed, 8 Feb 2023 18:13:08 +0800
Subject: [PATCH] 'update'
---
public/index.html | 10 +-
.../base-dialog/addOrUpdate/index.vue | 2 +
.../base-table/components/table-head.vue | 7 +-
src/components/base-table/index.vue | 5 +-
src/i18n/en.js | 151 +++----
src/i18n/zh-CN.js | 14 +-
src/views/modules/job/schedule.vue | 402 +++++++++---------
src/views/modules/monitoring/equipment.vue | 1 +
.../monitoring/equipmentCurrentState.vue | 1 +
.../monitoring/equipmentEfficiency.vue | 1 +
.../modules/monitoring/equipmentException.vue | 1 +
.../modules/monitoring/equipmentGroup.vue | 1 +
.../monitoring/equipmentGroupAlarm.vue | 1 +
.../equipmentHistoricalParameters.vue | 59 +--
.../modules/monitoring/equipmentType.vue | 1 +
.../modules/monitoring/equipmentattr.vue | 1 +
src/views/modules/monitoring/factory.vue | 1 +
.../modules/monitoring/productionLine.vue | 1 +
.../monitoring/qualityInspectionBoxBtn.vue | 1 +
.../monitoring/qualityInspectionDet.vue | 1 +
.../monitoring/qualityInspectionRecord.vue | 12 +-
.../monitoring/qualityInspectionType.vue | 1 +
.../modules/monitoring/realtimeEquipment.vue | 4 +-
.../monitoring/realtimeProductLine.vue | 33 +-
.../monitoring/realtimeQualityInspection.vue | 3 +-
.../modules/monitoring/reportCategory.vue | 1 +
.../modules/monitoring/workShopSection.vue | 1 +
.../monitoring/workshopSectionDialog.vue | 1 +
.../modules/sys/dict-type-add-or-update.vue | 2 +-
src/views/modules/sys/dict-type.vue | 2 +-
src/views/modules/sys/log-login.vue | 31 +-
src/views/modules/sys/log-operation.vue | 31 +-
src/views/modules/sys/menu-add-or-update.vue | 45 +-
src/views/modules/sys/menu.vue | 9 +-
src/views/modules/sys/role-add-or-update.vue | 4 +-
src/views/modules/sys/user-add-or-update.vue | 22 +-
src/views/modules/sys/user.vue | 61 ++-
37 files changed, 580 insertions(+), 345 deletions(-)
diff --git a/public/index.html b/public/index.html
index 5bad048..642ec0d 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,3 +1,11 @@
+
@@ -31,7 +39,7 @@
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<% } %>
diff --git a/src/components/base-dialog/addOrUpdate/index.vue b/src/components/base-dialog/addOrUpdate/index.vue
index 605d855..3d5058b 100644
--- a/src/components/base-dialog/addOrUpdate/index.vue
+++ b/src/components/base-dialog/addOrUpdate/index.vue
@@ -27,11 +27,13 @@
:disabled="isDetail" />
+
diff --git a/src/components/base-table/components/table-head.vue b/src/components/base-table/components/table-head.vue
index c51360d..eb93613 100644
--- a/src/components/base-table/components/table-head.vue
+++ b/src/components/base-table/components/table-head.vue
@@ -4,20 +4,21 @@
* @Author: fzq
* @Date: 2022-11-25 09:51:46
* @LastEditors: fzq
- * @LastEditTime: 2023-02-03 14:30:23
+ * @LastEditTime: 2023-02-08 17:16:47
-->
+
+
diff --git a/src/components/base-table/index.vue b/src/components/base-table/index.vue
index 2114896..7821354 100644
--- a/src/components/base-table/index.vue
+++ b/src/components/base-table/index.vue
@@ -55,6 +55,7 @@
"
v-bind="head.more">
+
@@ -77,7 +78,7 @@
-
+
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 11c24c9..555e6f6 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -25,16 +25,18 @@ t.routes['厂务'] = 'Factory Affair'
t.routes['设备'] = 'Equipment'
t.routes['字典管理'] = 'Dict Management'
t.routes['PLC信息'] = 'PLC'
-t.routes['设备与PLC关联配置'] = 'Relations between plc & equipments'
-t.routes['近24小时设备生产数据'] = 'Realtime Equipment Data(24h)'
-t.routes['近24小时产线生产数据'] = 'Realtime Productline Data(24h)'
-t.routes['近24小时质量检查数据'] = 'Realtime Quality Inspection Data(24h)'
+// Relations between
+t.routes['设备与PLC关联配置'] = 'PLC & Equipments'
+t.routes['近24小时设备生产数据'] = 'Equipment Data'
+t.routes['近24小时产线生产数据'] = 'Productline Data'
+t.routes['近24小时质量检查数据'] = 'Quality Inspection Data'
t.routes['报表总览'] = 'Report Overview'
t.routes['报表分类'] = 'Report Types'
t.routes['报表详情'] = 'Report Detail'
t.routes['报表设计'] = 'Report Design'
t.routes['报表预览'] = 'Report Preview'
-t.routes['质量检测基础数据'] = 'Quality Inspection Basic Data'
+// Quality
+t.routes['质量检测基础数据'] = 'Inspection Basic Data'
t.routes['当前检测数据'] = 'Current Inspection Data'
t.routes['检测统计数据'] = 'Statistics Data'
t.routes['质量检查信息记录'] = 'Quality Inspection Records'
@@ -46,10 +48,10 @@ t.routes['参数管理'] = 'Params Management'
t.routes['定时任务'] = 'Timed Tasks'
t.routes['文件上传'] = 'File Upload'
t.routes['登录日志'] = 'Login Records'
-t.routes['操作日志'] = 'Oprations Records'
-t.routes['设备效率分析'] = 'Equipment Efficiency Analysis'
-t.routes['设备异常分析'] = 'Equipment Exceptions Analysis'
-t.routes['设备状态时序图'] = 'Equipment Status Timesequence'
+t.routes['操作日志'] = 'Operations Records'
+t.routes['设备效率分析'] = 'EQU Efficiency Analysis'
+t.routes['设备异常分析'] = 'EQU Exceptions Analysis'
+t.routes['设备状态时序图'] = 'EQU Status Timesequence'
// 三级
t.routes['工厂'] = 'Factory'
@@ -103,12 +105,12 @@ t.updatorName = 'Updator\'s name'
t.updateTime = 'Update Time'
t.version = 'Version'
t.search = 'Search'
-t.countPerPage = '每页数' // ?
-t.currentPage = '当前页' // ?
-t.fetchList = '获取数据列表' // ?
-t.multi = '多选' // ?
-t.do = '进行' // ?
-t.submit = '表单提交' // ?
+t.countPerPage = 'Per Page' // ?
+t.currentPage = 'Current Page' // ?
+t.fetchList = 'Fetch Data List' // ?
+t.multi = 'Multiple Selection' // ?
+t.do = 'Proceed' // ?
+t.submit = 'Submit' // ?
t.desc = 'Description'
t.disable = 'Disable'
t.equipment = 'Equipment'
@@ -117,7 +119,7 @@ t.cannotempty = 'can\'t be empty'
t.parameter = 'Parameters'
t.enable = 'Enable'
t.index = 'Index'
-t.relation = '关联'
+t.relation = 'Relation'
t.fetchInfo = 'Fetch Info'
t.name = 'Name'
t.code = 'Code'
@@ -187,6 +189,10 @@ t.refdate = 'By date'
t.hour = 'Hour(s)'
t.yes = 'yes'
t.no = 'no'
+t.LoginRecords = ' Login Records'
+t.operationsRecords = ' Operations Records'
+t.allIcons= 'All Icons'
+t.err= 'Error'
t.errors = {}
t.errors.nosection = 'There is no sections on this product line.'
@@ -272,7 +278,7 @@ t.inspect.typeCount = 'Data of inspection types'
t.realtime = {}
t.realtime.eq = 'Realtime data of equipments(24h)'
-t.realtime.pl = 'Realtime data of product lines(24h)'
+t.realtime.pl = 'Realtime data of productlines(24h)'
t.realtime.inspect = 'Realtime data of quality inspections(24h)'
t.realtime.in = 'in'
t.realtime.out = 'out'
@@ -413,10 +419,11 @@ t.validate = {}
t.validate.required = 'This is required.'
t.validate.format = '{attr} has a wrong format.'
t.validate.keyValueWarning = 'The value must be an integer between 0 and 100!'
+t.validate.requiredRole = 'Choose at least one role'
t.upload = {}
t.upload.title = 'Upload Assets'
-t.upload.text = '将文件拖到此处,或点击上传'
+t.upload.text = 'Drag the file here, or click Upload '
t.upload.tip = 'Only support files with format: {format}'
t.upload.button = 'upload'
@@ -484,60 +491,60 @@ t.schedule.times = 'Time Cost (ms)'
t.schedule.createDate = 'Executed Tune' // ?
t.oss = {}
-t.oss.config = '云存储配置'
-t.oss.upload = '上传文件'
-t.oss.url = 'URL地址'
+t.oss.config = 'Cloud storage configuration'
+t.oss.upload = 'upload'
+t.oss.url = 'url'
t.oss.createDate = 'Create Time'
-t.oss.type = '类型'
-t.oss.type1 = '七牛'
-t.oss.type2 = '阿里云'
-t.oss.type3 = '腾讯云'
-t.oss.qiniuDomain = '域名'
-t.oss.qiniuDomainTips = '七牛绑定的域名'
-t.oss.qiniuPrefix = '路径前缀'
-t.oss.qiniuPrefixTips = '不设置默认为空'
+t.oss.type = 'type'
+t.oss.type1 = 'Qiniu'
+t.oss.type2 = 'Aliyun'
+t.oss.type3 = 'Tencent Cloud'
+t.oss.qiniuDomain = 'Domain name'
+t.oss.qiniuDomainTips = 'Bound domain name'
+t.oss.qiniuPrefix = 'Prefix'
+t.oss.qiniuPrefixTips = 'If no, the default value is null'
t.oss.qiniuAccessKey = 'AccessKey'
-t.oss.qiniuAccessKeyTips = '七牛AccessKey'
+t.oss.qiniuAccessKeyTips = 'Qiniu AccessKey'
t.oss.qiniuSecretKey = 'SecretKey'
-t.oss.qiniuSecretKeyTips = '七牛SecretKey'
-t.oss.qiniuBucketName = '空间名'
-t.oss.qiniuBucketNameTips = '七牛存储空间名'
-t.oss.aliyunDomain = '域名'
-t.oss.aliyunDomainTips = '阿里云绑定的域名,如:http://cdn.renren.io'
-t.oss.aliyunPrefix = '路径前缀'
-t.oss.aliyunPrefixTips = '不设置默认为空'
+t.oss.qiniuSecretKeyTips = 'Qiniu SecretKey'
+t.oss.qiniuBucketName = 'BucketName'
+t.oss.qiniuBucketNameTips = 'Qiniu BucketName'
+t.oss.aliyunDomain = 'Domain'
+t.oss.aliyunDomainTips = 'Domain name bound to Ali Cloud, such as:http://cdn.renren.io'
+t.oss.aliyunPrefix = 'Prefix'
+t.oss.aliyunPrefixTips = 'If no, the default value is null'
t.oss.aliyunEndPoint = 'EndPoint'
-t.oss.aliyunEndPointTips = '阿里云EndPoint'
+t.oss.aliyunEndPointTips = 'Aliyun EndPoint'
t.oss.aliyunAccessKeyId = 'AccessKeyId'
-t.oss.aliyunAccessKeyIdTips = '阿里云AccessKeyId'
+t.oss.aliyunAccessKeyIdTips = 'Aliyun AccessKeyId'
t.oss.aliyunAccessKeySecret = 'AccessKeySecret'
-t.oss.aliyunAccessKeySecretTips = '阿里云AccessKeySecret'
+t.oss.aliyunAccessKeySecretTips = 'Aliyun AccessKeySecret'
t.oss.aliyunBucketName = 'BucketName'
-t.oss.aliyunBucketNameTips = '阿里云BucketName'
-t.oss.qcloudDomain = '域名'
-t.oss.qcloudDomainTips = '腾讯云绑定的域名'
-t.oss.qcloudPrefix = '路径前缀'
-t.oss.qcloudPrefixTips = '不设置默认为空'
+t.oss.aliyunBucketNameTips = 'Aliyun BucketName'
+t.oss.qcloudDomain = 'Domain'
+t.oss.qcloudDomainTips = 'Tencent Cloud Domains'
+t.oss.qcloudPrefix = 'Prefix'
+t.oss.qcloudPrefixTips = 'If no, the default value is null'
t.oss.qcloudAppId = 'AppId'
-t.oss.qcloudAppIdTips = '腾讯云AppId'
+t.oss.qcloudAppIdTips = 'Tencent Cloud AppId'
t.oss.qcloudSecretId = 'SecretId'
-t.oss.qcloudSecretIdTips = '腾讯云SecretId'
+t.oss.qcloudSecretIdTips = 'Tencent Cloud SecretId'
t.oss.qcloudSecretKey = 'SecretKey'
-t.oss.qcloudSecretKeyTips = '腾讯云SecretKey'
+t.oss.qcloudSecretKeyTips = 'Tencent Cloud SecretKey'
t.oss.qcloudBucketName = 'BucketName'
-t.oss.qcloudBucketNameTips = '腾讯云BucketName'
-t.oss.qcloudRegion = '所属地区'
-t.oss.qcloudRegionTips = '请选择'
-t.oss.qcloudRegionBeijing1 = '北京一区(华北)'
-t.oss.qcloudRegionBeijing = '北京'
-t.oss.qcloudRegionShanghai = '上海(华东)'
-t.oss.qcloudRegionGuangzhou = '广州(华南)'
-t.oss.qcloudRegionChengdu = '成都(西南)'
-t.oss.qcloudRegionChongqing = '重庆'
-t.oss.qcloudRegionSingapore = '新加坡'
-t.oss.qcloudRegionHongkong = '香港'
-t.oss.qcloudRegionToronto = '多伦多'
-t.oss.qcloudRegionFrankfurt = '法兰克福'
+t.oss.qcloudBucketNameTips = 'Tencent Cloud BucketName'
+t.oss.qcloudRegion = 'Region'
+t.oss.qcloudRegionTips = 'Select'
+t.oss.qcloudRegionBeijing1 = 'Beijing District 1 (North China)'
+t.oss.qcloudRegionBeijing = 'Beijing'
+t.oss.qcloudRegionShanghai = 'Shanghai (East China)'
+t.oss.qcloudRegionGuangzhou = 'Guangzhou (South China)'
+t.oss.qcloudRegionChengdu = 'Chengdu (Southwest)'
+t.oss.qcloudRegionChongqing = 'Chongqing'
+t.oss.qcloudRegionSingapore = 'Singapore'
+t.oss.qcloudRegionHongkong = 'Hong Kong'
+t.oss.qcloudRegionToronto = 'Toronto'
+t.oss.qcloudRegionFrankfurt = 'Frankfurt'
t.dept = {}
t.dept.name = 'Department Name'
@@ -557,7 +564,7 @@ t.dict.remark = 'Remark'
t.dict.createDate = 'Create Time'
t.logError = {}
-t.logError.requestUri = 'Request URI'
+t.logError.requestUri = 'Request URL'
t.logError.requestMethod = 'Request Method'
t.logError.requestParams = 'Request Parameters'
t.logError.ip = 'IP'
@@ -584,7 +591,7 @@ t.logOperation.status0 = 'Failed'
t.logOperation.status1 = 'Success'
t.logOperation.creatorName = 'User Name'
t.logOperation.operation = 'User Operations'
-t.logOperation.requestUri = 'Request URI'
+t.logOperation.requestUri = 'Request URL'
t.logOperation.requestMethod = 'Request Method'
t.logOperation.requestParams = 'Request Parameters'
t.logOperation.requestTime = 'Request Duration'
@@ -593,21 +600,22 @@ t.logOperation.userAgent = 'User-Agent'
t.logOperation.createDate = 'Create Time'
t.menu = {}
-t.menu.name = 'Name'
+t.menu.name = 'Chinese Name'
+t.menu.nameEn = 'Name'
t.menu.icon = 'Icons'
t.menu.type = 'Type'
t.menu.type0 = 'Menu'
t.menu.type1 = 'Button'
t.menu.sort = 'Sort'
t.menu.url = 'Route'
-t.menu.permissions = '授权标识'
-t.menu.permissionsTips = '多个用逗号分隔,如:sys:menu:save,sys:menu:update'
-t.menu.parentName = '上级菜单'
+t.menu.permissions = 'Authorization Identifier'
+t.menu.permissionsTips = 'Multiple are separated by commas, such as:sys:menu:save,sys:menu:update'
+t.menu.parentName = 'Superior menu'
t.menu.parentNameDefault = 'First tier menu'
-t.menu.resource = '授权资源'
-t.menu.resourceUrl = '资源URL'
+t.menu.resource = 'Authorized Resource'
+t.menu.resourceUrl = 'Resource URL'
t.menu.resourceMethod = 'Request methods'
-t.menu.resourceAddItem = '添加一项'
+t.menu.resourceAddItem = 'Add Item'
t.params = {}
t.params.name = 'Parameter Name'
@@ -616,7 +624,7 @@ t.params.paramCode = 'Parameter Code'
t.params.paramValue = 'Parameter Value'
t.params.paramStdValue = 'Standard Parameter Code'
t.params.plctitle = 'PLC Collection Parameters'
-t.params.plcid = 'PLC连接表ID'
+t.params.plcid = 'PLC ID'
t.params.remark = 'Remark'
t.role = {}
@@ -647,5 +655,6 @@ t.user.validate = {}
t.user.validate.confirmPassword = 'The two passwords are different. Please check again.'
t.user.select = 'Select an user'
t.user.selecterror = 'Pick up a record'
+t.user.userTable = ' User Table'
export default t
\ No newline at end of file
diff --git a/src/i18n/zh-CN.js b/src/i18n/zh-CN.js
index 58f13ff..9cb0aad 100644
--- a/src/i18n/zh-CN.js
+++ b/src/i18n/zh-CN.js
@@ -187,6 +187,10 @@ t.refdate = '按日期'
t.hour = '小时'
t.yes = '是'
t.no = '否'
+t.LoginRecords = ' 登录日志'
+t.operationsRecords = ' 操作日志'
+t.allIcons= '所有图标'
+t.err= '错误'
t.errors = {}
@@ -413,6 +417,8 @@ t.validate = {}
t.validate.required = '必填项不能为空'
t.validate.format = '{attr}格式错误'
t.validate.keyValueWarning = '该数值必须是100以内的正整数!'
+t.validate.requiredRole = '至少选择一个角色'
+
t.upload = {}
t.upload.title = '上传资料'
@@ -557,7 +563,7 @@ t.dict.remark = '备注'
t.dict.createDate = '创建时间'
t.logError = {}
-t.logError.requestUri = '请求URI'
+t.logError.requestUri = '请求URL'
t.logError.requestMethod = '请求方式'
t.logError.requestParams = '请求参数'
t.logError.ip = '操作IP'
@@ -584,7 +590,7 @@ t.logOperation.status0 = '失败'
t.logOperation.status1 = '成功'
t.logOperation.creatorName = '用户名'
t.logOperation.operation = '用户操作'
-t.logOperation.requestUri = '请求URI'
+t.logOperation.requestUri = '请求URL'
t.logOperation.requestMethod = '请求方式'
t.logOperation.requestParams = '请求参数'
t.logOperation.requestTime = '请求时长'
@@ -593,7 +599,8 @@ t.logOperation.userAgent = 'User-Agent'
t.logOperation.createDate = '创建时间'
t.menu = {}
-t.menu.name = '名称'
+t.menu.name = '中文名'
+t.menu.nameEn = '英文名'
t.menu.icon = '图标'
t.menu.type = '类型'
t.menu.type0 = '菜单'
@@ -647,6 +654,7 @@ t.user.validate = {}
t.user.validate.confirmPassword = '确认密码与密码输入不一致'
t.user.select = '选择用户'
t.user.selecterror = '请选择一条记录'
+t.user.userTable = ' 用户表'
export default t
diff --git a/src/views/modules/job/schedule.vue b/src/views/modules/job/schedule.vue
index df4f7df..278642b 100644
--- a/src/views/modules/job/schedule.vue
+++ b/src/views/modules/job/schedule.vue
@@ -1,78 +1,72 @@
-
-
-
-
- {{ $t('schedule.beanName') }}
-
-
-
-
-
- {{ $t('query') }}
-
-
- {{ $t('add') }}
-
-
- {{ $t('deleteBatch') }}
-
-
- {{ $t('schedule.pauseBatch') }}
-
-
- {{ $t('schedule.resumeBatch') }}
-
-
- {{ $t('schedule.runBatch') }}
-
-
- {{ $t('schedule.log') }}
-
-
-
-
-
-
-
-
-
-
- {{ $t('schedule.status1') }}
- {{ $t('schedule.status0') }}
-
-
-
-
- {{ $t('update') }}
- {{ $t('schedule.pause') }}
- {{ $t('schedule.resume') }}
- {{ $t('schedule.run') }}
- {{ $t('delete') }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ $t('schedule.beanName') }}
+
+
+
+
+
+ {{ $t('query') }}
+
+
+ {{ $t('add') }}
+
+
+ {{ $t('deleteBatch') }}
+
+
+ {{ $t('schedule.pauseBatch') }}
+
+
+ {{ $t('schedule.resumeBatch') }}
+
+
+ {{ $t('schedule.runBatch') }}
+
+
+ {{ $t('schedule.log') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('schedule.status1') }}
+ {{ $t('schedule.status0') }}
+
+
+
+
+ {{ $t('update') }}
+ {{ $t('schedule.pause') }}
+ {{ $t('schedule.resume') }}
+ {{ $t('schedule.run') }}
+ {{ $t('delete') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/modules/monitoring/equipment.vue b/src/views/modules/monitoring/equipment.vue
index d5b9be4..e10d5de 100644
--- a/src/views/modules/monitoring/equipment.vue
+++ b/src/views/modules/monitoring/equipment.vue
@@ -66,6 +66,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{
diff --git a/src/views/modules/monitoring/equipmentCurrentState.vue b/src/views/modules/monitoring/equipmentCurrentState.vue
index a9c78cc..393d7e8 100644
--- a/src/views/modules/monitoring/equipmentCurrentState.vue
+++ b/src/views/modules/monitoring/equipmentCurrentState.vue
@@ -58,6 +58,7 @@ import TableTextComponent from '@/components/base-table/components/detailCompone
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'equipmentName', name: i18n.t('realtime.eqName') },
diff --git a/src/views/modules/monitoring/equipmentEfficiency.vue b/src/views/modules/monitoring/equipmentEfficiency.vue
index df5614e..1455a6a 100644
--- a/src/views/modules/monitoring/equipmentEfficiency.vue
+++ b/src/views/modules/monitoring/equipmentEfficiency.vue
@@ -89,6 +89,7 @@ import moment from 'moment'
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{
diff --git a/src/views/modules/monitoring/equipmentException.vue b/src/views/modules/monitoring/equipmentException.vue
index 522be9d..5df0c25 100644
--- a/src/views/modules/monitoring/equipmentException.vue
+++ b/src/views/modules/monitoring/equipmentException.vue
@@ -52,6 +52,7 @@ import moment from 'moment'
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
// { prop: 'time', name: '时间', filter: timeFilter },
diff --git a/src/views/modules/monitoring/equipmentGroup.vue b/src/views/modules/monitoring/equipmentGroup.vue
index 8d8e496..c2936fa 100644
--- a/src/views/modules/monitoring/equipmentGroup.vue
+++ b/src/views/modules/monitoring/equipmentGroup.vue
@@ -57,6 +57,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/equipmentGroupAlarm.vue b/src/views/modules/monitoring/equipmentGroupAlarm.vue
index f5d4a67..10d59e9 100644
--- a/src/views/modules/monitoring/equipmentGroupAlarm.vue
+++ b/src/views/modules/monitoring/equipmentGroupAlarm.vue
@@ -76,6 +76,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/equipmentHistoricalParameters.vue b/src/views/modules/monitoring/equipmentHistoricalParameters.vue
index b1e4409..5f6df63 100644
--- a/src/views/modules/monitoring/equipmentHistoricalParameters.vue
+++ b/src/views/modules/monitoring/equipmentHistoricalParameters.vue
@@ -21,8 +21,8 @@
-
-
+
+
@@ -42,6 +42,7 @@ export default {
equipmentName: null,
equipmentCode: null,
tableConfigs: [],
+ dataLength: null,
dataList: [],
dataListLoading: false,
dataListSelections: []
@@ -74,46 +75,53 @@ export default {
url: this.$http.adornUrl(`/monitoring/equipmentValueMonitor/runLog/${this.$route.params.id}`),
method: 'get'
}).then(({ data: res }) => {
- console.log('res', res)
+ // console.log('res', res)
this.equipmentName = res.data[0].data[0].equName
this.equipmentCode = res.data[0].data[0].equCode
+ this.dataLength = res.data.length
+ for (let i = 0; i < this.dataLength; i++) {
if (
res &&
res.code === 0 &&
res.data &&
res.data.length > 0 &&
- res.data[0].nameData &&
- res.data[0].nameData.length > 0 &&
- res.data[0].data &&
- res.data[0].data.length > 0
+ res.data[i].nameData &&
+ res.data[i].nameData.length > 0 &&
+ res.data[i].data &&
+ res.data[i].data.length > 0
) {
// console.log(this.equipmentName)
- this.setTableProps(res.data[0].nameData)
- this.setTableData(res.data[0].data)
+ this.setTableProps(res.data[i].nameData)
+ this.setTableData(res.data[i].data)
} else {
- this.dataList = []
+ this.dataList[i] = []
}
this.dataListLoading = false
+ }
})
},
setTableProps(nameData) {
- this.tableConfigs = [
- {
- type: 'index',
- name: i18n.t('index')
- },
- { prop: 'time', name: this.$t('ti'), filter: timeFilter },
- { prop: 'plcCode', name: this.$t('plcCode') },
- // { prop: 'equName', name: this.$t('equName') },
- // { prop: 'equCode', name: this.$t('equCode') },
- // ...['数值1', '数值2', '数值3'].map(name => {
- // return { prop: name, name }
- // })
- ...Array.from(new Set(nameData.map((item) => item.name))).map((name) => ({ prop: name, name }))
- ]
+ for (let i = 0; i < this.dataLength; i++) {
+ this.tableConfigs[i] = [
+ {
+ type: 'index',
+ name: i18n.t('index')
+ },
+ { prop: 'time', name: this.$t('ti'), filter: timeFilter },
+ { prop: 'plcCode', name: this.$t('plcCode') },
+ // { prop: 'equName', name: this.$t('equName') },
+ // { prop: 'equCode', name: this.$t('equCode') },
+ // ...['数值1', '数值2', '数值3'].map(name => {
+ // return { prop: name, name }
+ // })
+ ...Array.from(new Set(nameData.map((item) => item.name))).map((name) => ({ prop: name, name }))
+ ]
+ console.log(this.tableConfigs[i]);
+ }
},
setTableData(data) {
- this.dataList = data.map((item) => {
+ for (let i = 0; i < this.dataLength; i++) {
+ this.dataList[i] = data.map((item) => {
const rowItem = pick(item, ['time', 'plcCode', 'equName', 'equCode'])
if (item.data && item.data.length > 0) {
item.data.forEach((param) => {
@@ -122,6 +130,7 @@ export default {
}
return rowItem
})
+ }
}
}
}
diff --git a/src/views/modules/monitoring/equipmentType.vue b/src/views/modules/monitoring/equipmentType.vue
index 88569b9..f7cb485 100644
--- a/src/views/modules/monitoring/equipmentType.vue
+++ b/src/views/modules/monitoring/equipmentType.vue
@@ -57,6 +57,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/equipmentattr.vue b/src/views/modules/monitoring/equipmentattr.vue
index 13ce366..3c210fa 100644
--- a/src/views/modules/monitoring/equipmentattr.vue
+++ b/src/views/modules/monitoring/equipmentattr.vue
@@ -38,6 +38,7 @@ import TableOperateComponent from '@/components/base-table/components/operationC
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/factory.vue b/src/views/modules/monitoring/factory.vue
index af8e144..ff098e8 100644
--- a/src/views/modules/monitoring/factory.vue
+++ b/src/views/modules/monitoring/factory.vue
@@ -56,6 +56,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/productionLine.vue b/src/views/modules/monitoring/productionLine.vue
index 3d20004..6eb5022 100644
--- a/src/views/modules/monitoring/productionLine.vue
+++ b/src/views/modules/monitoring/productionLine.vue
@@ -54,6 +54,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/qualityInspectionBoxBtn.vue b/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
index 8af5a87..fb446b6 100644
--- a/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
+++ b/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
@@ -65,6 +65,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{
diff --git a/src/views/modules/monitoring/qualityInspectionDet.vue b/src/views/modules/monitoring/qualityInspectionDet.vue
index 438877a..8fb9152 100644
--- a/src/views/modules/monitoring/qualityInspectionDet.vue
+++ b/src/views/modules/monitoring/qualityInspectionDet.vue
@@ -47,6 +47,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/qualityInspectionRecord.vue b/src/views/modules/monitoring/qualityInspectionRecord.vue
index bfbf83a..68875a3 100644
--- a/src/views/modules/monitoring/qualityInspectionRecord.vue
+++ b/src/views/modules/monitoring/qualityInspectionRecord.vue
@@ -71,6 +71,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
@@ -111,7 +112,7 @@ const addOrUpdateConfigs = {
// placeholder: i18n.t('hints.checktime')
// },
{ name: 'productionId', required: true, label: i18n.t('pl.title'), type: 'select', options: [] },
- { name: 'sectionId', required: true, label: i18n.t('ws.title'), type: 'select', options: [] , isDisabled: true },
+ { name: 'sectionId', required: true, label: i18n.t('ws.title'), type: 'select', options: [], isDisabled: true },
{
name: 'source',
label: i18n.t('source'),
@@ -183,7 +184,6 @@ export default {
this.$set(this.addOrUpdateConfigs.fields[2], 'isDisabled', true)
}
await this.getWorkSections(id)
-
}
if (name === 'sectionId') {
// 如果选择了产线,就依据此更新工单的选项
@@ -198,9 +198,11 @@ export default {
url: this.$http.adornUrl('/monitoring/qualityInspectionDet/page'),
method: 'get',
params: this.$http.adornParams({
- page: this.pageIndex,
- limit: this.pageSize,
- key: this.dataForm.key
+ // page: this.pageIndex,
+ // limit: this.pageSize,
+ // key: this.dataForm.key
+ page: 1,
+ limit: 9999999
})
}).then(({ data: res }) => {
console.log('insdet:', res)
diff --git a/src/views/modules/monitoring/qualityInspectionType.vue b/src/views/modules/monitoring/qualityInspectionType.vue
index 30ec778..bfbb955 100644
--- a/src/views/modules/monitoring/qualityInspectionType.vue
+++ b/src/views/modules/monitoring/qualityInspectionType.vue
@@ -57,6 +57,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/realtimeEquipment.vue b/src/views/modules/monitoring/realtimeEquipment.vue
index 3093122..e387edb 100644
--- a/src/views/modules/monitoring/realtimeEquipment.vue
+++ b/src/views/modules/monitoring/realtimeEquipment.vue
@@ -2,14 +2,14 @@
* @Author: lb
* @Date: 2022-06-22 14:00:17
* @LastEditors: fzq
- * @LastEditTime: 2023-02-02 17:19:10
+ * @LastEditTime: 2023-02-08 16:50:05
* @Description: 设备生产实时数据
-->
{{ $t('realtime.eq') }}
-
+
diff --git a/src/views/modules/monitoring/realtimeProductLine.vue b/src/views/modules/monitoring/realtimeProductLine.vue
index 30d5b9d..58a9f0e 100644
--- a/src/views/modules/monitoring/realtimeProductLine.vue
+++ b/src/views/modules/monitoring/realtimeProductLine.vue
@@ -2,7 +2,7 @@
* @Author: lb
* @Date: 2022-06-22 14:00:17
* @LastEditors: fzq
- * @LastEditTime: 2023-02-02 17:17:45
+ * @LastEditTime: 2023-02-07 16:23:23
* @Description: 产线生产实时数据
-->
@@ -38,12 +38,19 @@ export default {
},
mounted() {
+ console.log('this.$route', this.$route)
this.clearData()
- this.fetchList().then(({ data: res }) => {
- // console.log('fetchlist:', res)
- this.testData = res
- this.handleData()
- })
+ // this.fetchList().then(({ data: res }) => {
+ // // console.log('fetchlist:', res)
+ // this.testData = res
+ // this.handleData()
+ // if (res.code === 200 || this.$route.fullPath !== '/monitoring-realtimeProductLine') {
+ // // 获取数据显示成功后,关闭loading
+ // loading.close()
+ // } else {
+ // this.$message.error(this.$t('err'))
+ // }
+ // })
this.intervalId = setInterval(() => {
this.$message({
@@ -66,6 +73,12 @@ export default {
methods: {
fetchList() {
+ // let loading = this.$loading({
+ // lock: true, //lock的修改符--默认是false
+ // text: this.$t('loading'), //显示在加载图标下方的加载文案
+ // background: 'rgba(0,0,0,0.8)', //遮罩层颜色
+ // spinner: 'el-icon-loading' //自定义加载图标类名
+ // })
return this.$http({
url: this.$http.adornUrl('/monitoring/productionMonitoring/lineProductionRealTimeData'),
method: 'post'
@@ -97,7 +110,7 @@ export default {
expandDataStepOne() {
// 扩展服务器返回的数据第一阶段
// console.log('create new one')
- this.tableData = this.testData.data.map(item => {
+ this.tableData = this.testData.data.map((item) => {
const newItem = {
lineName: item.lineName,
orderName: item.orderName,
@@ -105,14 +118,14 @@ export default {
}
if (item.det) {
- item.det.forEach(obj => {
+ item.det.forEach((obj) => {
// Step2: 设置动态props
if (!this.dynamicPropSet) {
this.tableProps.push({
- label: moment(obj.recordTime).format('YYYY-MM-DD HH')+ moment(obj.recordTime).add(1,'hours').format('-HH')+i18n.t('hourTime'),
+ label: moment(obj.recordTime).format('YYYY-MM-DD HH') + moment(obj.recordTime).add(1, 'hours').format('-HH') + i18n.t('hourTime'),
children: [
{ prop: obj.recordTime + '-inputNum', label: i18n.t('realtime.in') },
- { prop: obj.recordTime + '-outputNum', label: i18n.t('realtime.out') },
+ { prop: obj.recordTime + '-outputNum', label: i18n.t('realtime.out') }
// { prop: obj.recordTime + '-passArea', label: i18n.t('realtime.goodrate') },
// { prop: obj.recordTime + '-scrapNum', label: i18n.t('realtime.num') },
// { prop: obj.recordTime + '-scrapRate', label: i18n.t('realtime.rate') }
diff --git a/src/views/modules/monitoring/realtimeQualityInspection.vue b/src/views/modules/monitoring/realtimeQualityInspection.vue
index 568f5dc..4a4b233 100644
--- a/src/views/modules/monitoring/realtimeQualityInspection.vue
+++ b/src/views/modules/monitoring/realtimeQualityInspection.vue
@@ -2,7 +2,8 @@
{{ $t('realtime.inspect') }}
-
+
+
diff --git a/src/views/modules/monitoring/reportCategory.vue b/src/views/modules/monitoring/reportCategory.vue
index a926ccc..caa1f3e 100644
--- a/src/views/modules/monitoring/reportCategory.vue
+++ b/src/views/modules/monitoring/reportCategory.vue
@@ -48,6 +48,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/workShopSection.vue b/src/views/modules/monitoring/workShopSection.vue
index 35c56bd..88a1da8 100644
--- a/src/views/modules/monitoring/workShopSection.vue
+++ b/src/views/modules/monitoring/workShopSection.vue
@@ -58,6 +58,7 @@ const topBtnConfig = [
const tableConfigs = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
diff --git a/src/views/modules/monitoring/workshopSectionDialog.vue b/src/views/modules/monitoring/workshopSectionDialog.vue
index 560218a..0064278 100644
--- a/src/views/modules/monitoring/workshopSectionDialog.vue
+++ b/src/views/modules/monitoring/workshopSectionDialog.vue
@@ -83,6 +83,7 @@ import { calcMaxHeight } from '@/utils'
const tableProps = [
{
type: 'index',
+ width: 100,
name: i18n.t('index')
},
{ name: i18n.t('eq.name'), prop: 'equipmentName' },
diff --git a/src/views/modules/sys/dict-type-add-or-update.vue b/src/views/modules/sys/dict-type-add-or-update.vue
index e82b1c9..cfb7fe2 100644
--- a/src/views/modules/sys/dict-type-add-or-update.vue
+++ b/src/views/modules/sys/dict-type-add-or-update.vue
@@ -1,6 +1,6 @@
-
+
diff --git a/src/views/modules/sys/dict-type.vue b/src/views/modules/sys/dict-type.vue
index 98bafe3..ab4c780 100644
--- a/src/views/modules/sys/dict-type.vue
+++ b/src/views/modules/sys/dict-type.vue
@@ -24,7 +24,7 @@
{{ $t('deleteBatch') }}
- 所有图标
+ {{ $t('allIcons') }}
@@ -81,6 +81,35 @@ export default {
status: ''
}
}
+ },
+ methods: {
+ exportHandle() {
+ // 导出登录日志
+ this.$http({
+ url: this.$http.adornUrl(`/sys/log/login/export${this.dataForm.creatorName,this.dataForm.status}`),
+ method: 'get',
+ responseType: "blob"
+ }).then((response) => {
+ let fileName = ''
+ const contentDisposition = response.headers['content-disposition']
+ if (contentDisposition) {
+ // fileName = contentDisposition.slice(contentDisposition.indexOf('filename=') + 9).replace('.xls',this.$t('LoginRecords')) +'.xls'
+ fileName = contentDisposition.slice(contentDisposition.indexOf('filename=') + 9)
+ }
+ fileName = decodeURIComponent(fileName)
+ const blob = new Blob([response.data])
+ const reader = new FileReader()
+ reader.readAsDataURL(blob)
+ reader.onload = (e) => {
+ const a = document.createElement('a')
+ a.download = fileName
+ a.href = e.target.result
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ }
+ })
+ }
}
}
diff --git a/src/views/modules/sys/log-operation.vue b/src/views/modules/sys/log-operation.vue
index b5a5790..c15823e 100644
--- a/src/views/modules/sys/log-operation.vue
+++ b/src/views/modules/sys/log-operation.vue
@@ -4,7 +4,7 @@
* @Author: fzq
* @Date: 2022-11-25 09:51:46
* @LastEditors: fzq
- * @LastEditTime: 2023-01-13 09:01:16
+ * @LastEditTime: 2023-02-08 16:19:16
-->
@@ -81,6 +81,35 @@ export default {
status: ''
}
}
+ },
+ methods: {
+ exportHandle() {
+ // 导出操作日志
+ this.$http({
+ url: this.$http.adornUrl(`/sys/log/operation/export`),
+ method: 'get',
+ responseType: "blob"
+ }).then((response) => {
+ let fileName = ''
+ const contentDisposition = response.headers['content-disposition']
+ if (contentDisposition) {
+ // fileName = contentDisposition.slice(contentDisposition.indexOf('filename=') + 9).replace('.xls',this.$t('operationsRecords')) +'.xls'
+ fileName = contentDisposition.slice(contentDisposition.indexOf('filename=') + 9)
+ }
+ fileName = decodeURIComponent(fileName)
+ const blob = new Blob([response.data])
+ const reader = new FileReader()
+ reader.readAsDataURL(blob)
+ reader.onload = (e) => {
+ const a = document.createElement('a')
+ a.download = fileName
+ a.href = e.target.result
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ }
+ })
+ }
}
}
diff --git a/src/views/modules/sys/menu-add-or-update.vue b/src/views/modules/sys/menu-add-or-update.vue
index ebd070b..a89cfef 100644
--- a/src/views/modules/sys/menu-add-or-update.vue
+++ b/src/views/modules/sys/menu-add-or-update.vue
@@ -7,12 +7,16 @@
{{ $t('menu.type1') }}
+
+
+
-
-
+
+
@@ -58,6 +59,10 @@ export default {
},
components: {
AddOrUpdate
+ },
+ created(){
+ // console.log('mixinViewModuleOptions',this.mixinViewModuleOptions);
+ // console.log('this.$i18n.locale',this.$i18n.locale);
}
}
diff --git a/src/views/modules/sys/role-add-or-update.vue b/src/views/modules/sys/role-add-or-update.vue
index 17de948..f54bbfe 100644
--- a/src/views/modules/sys/role-add-or-update.vue
+++ b/src/views/modules/sys/role-add-or-update.vue
@@ -10,7 +10,8 @@
-
+
+
@@ -80,6 +81,7 @@ export default {
return this.$message.error(res.msg)
}
this.menuList = res.data
+ console.log('this.menuList',this.menuList);
})
.catch(() => {})
},
diff --git a/src/views/modules/sys/user-add-or-update.vue b/src/views/modules/sys/user-add-or-update.vue
index bf91990..8adc020 100644
--- a/src/views/modules/sys/user-add-or-update.vue
+++ b/src/views/modules/sys/user-add-or-update.vue
@@ -17,7 +17,12 @@
-
+
+
+ {{ $t('user.gender0') }}
+ {{ $t('user.gender1') }}
+ {{ $t('user.gender2') }}
+
@@ -66,7 +71,8 @@ export default {
mobile: '',
roleIdList: [],
status: 1
- }
+ },
+ radio: '1'
}
},
computed: {
@@ -107,7 +113,7 @@ export default {
email: [{ validator: validateEmail, trigger: 'blur' }],
// 解除手机号输入限制
// mobile: [{ validator: validateMobile, trigger: 'blur' }],
- roleIdList: [{ required: true, message: '至少选择一个角色', trigger: 'change' }]
+ roleIdList: [{ required: true, message: this.$t('validate.requiredRole'), trigger: 'change' }]
}
}
},
@@ -115,8 +121,8 @@ export default {
// destroy dialog
handleDestroyDialog() {
setTimeout(() => {
- this.addOrUpdateVisible= false
- }, /** after dialog animated */ 200);
+ this.addOrUpdateVisible = false
+ }, /** after dialog animated */ 200)
},
init() {
this.visible = true
@@ -158,7 +164,7 @@ export default {
}
// 角色配置, 区分是否为默认角色
for (var i = 0; i < res.data.roleIdList.length; i++) {
- if (this.roleList.filter(item => item.id === res.data.roleIdList[i])[0]) {
+ if (this.roleList.filter((item) => item.id === res.data.roleIdList[i])[0]) {
this.dataForm.roleIdList.push(res.data.roleIdList[i])
continue
}
@@ -169,8 +175,8 @@ export default {
},
// 表单提交
dataFormSubmitHandle: debounce(
- function() {
- this.$refs['dataForm'].validate(valid => {
+ function () {
+ this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
diff --git a/src/views/modules/sys/user.vue b/src/views/modules/sys/user.vue
index 1645337..b2768b6 100644
--- a/src/views/modules/sys/user.vue
+++ b/src/views/modules/sys/user.vue
@@ -4,7 +4,7 @@
* @Author: fzq
* @Date: 2022-11-25 09:51:46
* @LastEditors: fzq
- * @LastEditTime: 2023-02-02 15:36:55
+ * @LastEditTime: 2023-02-07 15:29:45
-->
@@ -20,13 +20,16 @@
{{ $t('user.gender') }}
-
+
+
+
+
{{ $t('dept.title') }}
-
+
{{ $t('query') }}
@@ -41,7 +44,7 @@
{{ $t('export') }}
-
+
@@ -73,8 +76,7 @@
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
- @current-change="pageCurrentChangeHandle"
- >
+ @current-change="pageCurrentChangeHandle">
@@ -100,7 +102,52 @@ export default {
username: '',
deptId: '',
gender: ''
- }
+ },
+ genderOptions: [
+ {
+ value: 0,
+ label: this.$t('user.gender0')
+ },
+ {
+ value: 1,
+ label: this.$t('user.gender1')
+ },
+ {
+ value: 2,
+ label: this.$t('user.gender2')
+ }
+ ]
+ }
+ },
+ methods: {
+ exportHandle() {
+ // 导出用户
+ // exportEquipments({
+ // ...this.listQuery,
+ // fileName: `user-${this.listQuery.current}-${this.listQuery.size}`
+ // }).then((response) => {
+ this.$http({
+ url: this.$http.adornUrl(`/sys/user/export${this.dataForm.username}`),
+ method: 'get',
+ responseType: 'arraybuffer'
+ }).then((response) => {
+ let fileName = ''
+ const contentDisposition = response.headers['content-disposition']
+ if (contentDisposition) {
+ fileName = contentDisposition.slice(contentDisposition.indexOf('filename=') + 9).replace('.xls', this.$t('user.userTable')) + '.xls'
+ }
+ const blob = new Blob([response.data])
+ const reader = new FileReader()
+ reader.readAsDataURL(blob)
+ reader.onload = (e) => {
+ const a = document.createElement('a')
+ a.download = fileName
+ a.href = e.target.result
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ }
+ })
}
},
components: {