Browse Source

扫码

master
ruanqi 1 year ago
parent
commit
993649297b
  1. 8
      src/api/serial/checkLog.js
  2. 12
      src/assets/scss/global.scss
  3. 8
      src/views/modules/base/checkSerialNo.vue
  4. 277
      src/views/modules/serial/checkLog.vue
  5. 331
      src/views/modules/serial/upLoadSN.vue
  6. 2
      src/views/modules/sys/menu.vue
  7. 12
      src/views/modules/sys/user-add-or-update.vue
  8. 4
      static/config/index-prod.js

8
src/api/serial/checkLog.js

@ -0,0 +1,8 @@
import { createAPI } from "@/utils/httpRequest.js";
// 获取工厂列表
export const getCheckLogList = data => createAPI(`/serial/getCheckLogList`,'post',data)
export const saveSerialCSV= data => createAPI(`/serial/saveSerialCSV`,'post',data)
export const getCodePackageList= data => createAPI(`/serial/getCodePackageList`,'post',data)

12
src/assets/scss/global.scss

@ -491,12 +491,12 @@ a:hover{
height: 20px;
}
.checkBackground {
background-image: url(~@/assets/img/snIcons/background.png);
background-size: cover;
width: 100%;
height: 100%; /* 设置一个高度 */
}
//.checkBackground {
// background-image: url(~@/assets/img/snIcons/background.png);
// background-size: cover;
// width: 100%;
// height: 100%; /* 设置一个高度 */
//}
/* 根据需要添加样式 */
.qr-container {
width: 100%;

8
src/views/modules/base/checkSerialNo.vue

@ -77,6 +77,7 @@
import pE from '@/assets/img/snIcons/E.png'
import pF from '@/assets/img/snIcons/F.png'
import pFail from '@/assets/img/snIcons/fail.png'
import background from '@/assets/img/snIcons/background.png'
export default {
name: 'checkSerialNo',
data () {
@ -198,5 +199,10 @@
</script>
<style >
.checkBackground {
background-image: url(~@/assets/img/snIcons/background.png);
background-size: cover;
width: 100%;
height: 100%; /* 设置一个高度 */
}
</style>

277
src/views/modules/serial/checkLog.vue

@ -0,0 +1,277 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="searchData">
<el-form-item :label="'序列号'">
<el-input v-model="searchData.serialNo" style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'查询日期'">
<el-date-picker
style="width: 120px"
v-model="searchData.startDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item :label="'到'">
<el-date-picker
style="width: 120px"
v-model="searchData.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item :label="' '">
<el-button @click="getDataList()">查询</el-button>
<download-excel
:fields="fields()"
:data="exportData"
type="xls"
:name="exportName"
:header="exportHeader"
:footer="exportFooter"
:fetch="createExportData"
:before-generate="startDownload"
:before-finish="finishDownload"
worksheet="导出信息"
class="el-button el-button--primary el-button--medium">
{{ "导出" }}
</download-excel>
</el-form-item>
</el-form>
<el-table
:height="height"
:data="dataList"
border
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import {
getCheckLogList,
} from "@/api/serial/checkLog.js"
export default {
data () {
return {
//
favorite: false,
// start
exportData: [],
exportName: "查询日志" + this.dayjs().format('YYYYMMDDHHmmss'),
exportHeader: ["查询日志"],
exportFooter: [],
exportList:[],
// end
searchData: {
serialNo: '',
startDate: '',
endDate: '',
page: 1,
limit: 10,
},
height: 200,
pageIndex: 1,
pageSize: 50,
totalPage: 0,
dataList: [],
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002CheckTime',
tableId: "101001002Table1",
tableName: "查询日志表",
columnProp: 'checkTime',
headerAlign: "center",
align: "center",
columnLabel: '查询时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 130,
},
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1SerialNo',
tableId: "101001002Table1",
tableName: "查询日志表",
columnProp: 'serialNo',
headerAlign: "center",
align: "left",
columnLabel: '序列号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 300,
},
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1IpAddress',
tableId: "101001002Table1",
tableName: "查询日志表",
columnProp: 'ipAddress',
headerAlign: "center",
align: "left",
columnLabel: 'IP地址',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
},
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1Location',
tableId: "101001002Table1",
tableName: "查询日志表",
columnProp: 'location',
headerAlign: "center",
align: "left",
columnLabel: '地区',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
},
],
}
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 210
this. getDataList ()
})
},
created () {
},
methods: {
//excel
async createExportData () {
this.searchData.limit = -1
this.searchData.page = 1
await getCheckLogList(this.searchData).then(({data}) => {
this.exportList = data.page.list
})
return this.exportList
},
startDownload () {},
finishDownload () {},
fields () {
let json = "{"
this.columnList.forEach((item, index) => {
if (index == this.columnList.length - 1) {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
} else {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
}
})
json += "}"
let s = eval("(" + json + ")")
return s
},
//
getDataList () {
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
getCheckLogList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
}
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
}
}
</script>
<style scoped>
/*.el-table /deep/ .cell{*/
/* height: auto;*/
/* line-height: 1.5;*/
/*}*/
</style>

331
src/views/modules/serial/upLoadSN.vue

@ -0,0 +1,331 @@
<template>
<div class="mod-config">
<el-form :inline="true" label-position="top" :model="searchData" >
<el-form-item :label="'文件名'">
<el-input v-model="searchData.oriFileName" style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'上传日期'">
<el-date-picker
style="width: 120px"
v-model="searchData.startDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item :label="'到'">
<el-date-picker
style="width: 120px"
v-model="searchData.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item :label="' '">
<el-button @click="getDataList()">查询</el-button>
<el-button type="primary" @click="addModal()">上传</el-button>
<download-excel
:fields="fields()"
:data="exportData"
type="xls"
:name="exportName"
:header="exportHeader"
:footer="exportFooter"
:fetch="createExportData"
:before-generate="startDownload"
:before-finish="finishDownload"
worksheet="导出信息"
class="el-button el-button--primary el-button--medium">
{{ "导出" }}
</download-excel>
</el-form-item>
</el-form>
<el-table
:height="height"
:data="dataList"
border
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog title="上传码包" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog">
<el-form :inline="true" label-position="top" label-width="80px">
<el-row>
<el-col :span="24">
<el-upload class="customer-upload" drag action="javascript:void(0);" ref="uploadFile2" :limit="1" accept=".csv"
:before-upload="beforeUploadHandle" :on-change="onChange" :auto-upload="false" style="text-align: left;">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
</el-upload>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" :disabled="updateFlag" @click="saveUploadFile">保存</el-button>
<el-button type="primary" :disabled="updateFlag" @click="closeDialog">关闭</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
saveSerialCSV,getCodePackageList,
} from "@/api/serial/checkLog.js"
export default {
data () {
return {
updateFlag:false,
// start
exportData: [],
exportName: "设备分组" + this.dayjs().format('YYYYMMDDHHmmss'),
exportHeader: ["设备分组"],
exportFooter: [],
exportList:[],
// end
searchData: {
site: this.$store.state.user.site,
userName: this.$store.state.user.name,
oriFileName: '',
startDate: '',
endDate: '',
page: 1,
limit: 10,
},
height: 200,
pageIndex: 1,
pageSize: 50,
totalPage: 0,
dataList: [],
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1OriFileName',
tableId: "101001002Table1",
tableName: "码包上传",
columnProp: 'oriFileName',
headerAlign: "center",
align: "center",
columnLabel: '码包文件名',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
},
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1CreatedDate',
tableId: "101001002Table1",
tableName: "码包上传",
columnProp: 'createdDate',
headerAlign: "center",
align: "center",
columnLabel: '上传时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120,
},
{
userId: this.$store.state.user.name,
functionId: 101001002,
serialNumber: '101001002Table1CreatedBy',
tableId: "101001002Table1",
tableName: "码包上传",
columnProp: 'createdBy',
headerAlign: "center",
align: "left",
columnLabel: '上传人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 200,
},
],
fileList: [],
visible:false,
}
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 210
this.getDataList ()
})
},
created () {
},
methods: {
//excel
async createExportData () {
this.searchData.limit = -1
this.searchData.page = 1
await getCodePackageList(this.searchData).then(({data}) => {
this.exportList = data.page.list
})
return this.exportList
},
startDownload () {},
finishDownload () {},
fields () {
let json = "{"
this.columnList.forEach((item, index) => {
if (index == this.columnList.length - 1) {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
} else {
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
}
})
json += "}"
let s = eval("(" + json + ")")
return s
},
//
getDataList () {
this.searchData.limit = this.pageSize
this.searchData.page = this.pageIndex
getCodePackageList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.page.list
this.pageIndex = data.page.currPage
this.pageSize = data.page.pageSize
this.totalPage = data.page.totalCount
}
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
//
beforeUploadHandle (file) {
let extName = file[0].name.substring(file[0].name.lastIndexOf('.')).toLowerCase()
if (!(extName === '.csv')) {
this.$message.error('数据导入失败,请选择正确的csv文件')
return false
}
},
//
onChange (file) {
this.fileList.push(file)
},
//
saveUploadFile () {
//
if (null == this.fileList || 0 === this.fileList.length) {
this.$message.error("请先上传文件!")
return false
}
const formData = new FormData()
formData.append("file", this.fileList[0].raw)
this.updateFlag=true
saveSerialCSV(formData).then(({data}) => {
if (data.code === 0) {
this.$message.success(data.msg)
this.updateFlag=false
//
this.closeDialog()
this.getDataList();
} else {
this.updateFlag=true
this.$message.warning(data.msg)
}
})
},
// modal
closeDialog () {
this.fileList = []
//
this.visible = false
this.$nextTick(() => {
//
this.$refs.uploadFile2.clearFiles()
});
},
addModal(){
this.fileList = []
//
this.updateFlag=false
this.visible = true
},
},
}
</script>
<style scoped>
/*.el-table /deep/ .cell{*/
/* height: auto;*/
/* line-height: 1.5;*/
/*}*/
</style>

2
src/views/modules/sys/menu.vue

@ -76,7 +76,7 @@
<template slot-scope="scope">
<a v-if="isAuth('sys:menu:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.menuId)">修改</a>
<a v-if="isAuth('sys:menu:delete')" type="text" size="small" @click="deleteHandle(scope.row.menuId)">删除</a>
<a type="text" size="small" @click="addOrUpdateLanguage(scope.row.menuId)">语言</a>
<!-- <a type="text" size="small" @click="addOrUpdateLanguage(scope.row.menuId)">语言</a>-->
<a v-if="isAuth('sys:oss:all') && scope.row.type === 1 " type="text" size="small" @click="helpFileList(scope.row.menuId)">帮助文档</a>
</template>
</el-table-column>

12
src/views/modules/sys/user-add-or-update.vue

@ -38,12 +38,12 @@
<span slot="label" style="" @click="getBaseList(93)"><a herf="#">工厂</a></span>
<el-input v-model="dataForm.site" style="width: 150px;" placeholder="工厂"></el-input>
</el-form-item>
<el-form-item label="语言" prop="languageDefault">
<el-select filterable v-model="dataForm.languageDefault" style="width: 150px;">
<el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "
:key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="语言" prop="languageDefault">-->
<!-- <el-select filterable v-model="dataForm.languageDefault" style="width: 150px;">-->
<!-- <el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "-->
<!-- :key="index"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
</el-form>
<el-form>
<el-form-item label="角色" size="mini" prop="roleIdList">

4
static/config/index-prod.js

@ -5,8 +5,8 @@
window.SITE_CONFIG = {};
// api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://192.168.47.252:9090';
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.1.83:8887';
window.SITE_CONFIG['baseUrl'] = '/api';
// cdn地址 = 域名 + 版本号
window.SITE_CONFIG['domain'] = './'; // 域名
window.SITE_CONFIG['version'] = ''; // 版本号(年月日时分)

Loading…
Cancel
Save