2 changed files with 489 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||
import {createAPI} from '../../utils/httpRequest' |
|||
|
|||
export const labelMaintenanceInfoSearch = (data) => createAPI(`/label/maintenance`,'post',data) |
|||
|
|||
export const uploadLabelMaintenancePicture = (data) => createAPI(`/label/maintenance/upload`,'post',data) |
|||
@ -0,0 +1,484 @@ |
|||
<script> |
|||
import {labelMaintenanceInfoSearch, uploadLabelMaintenancePicture} from "../../../api/label/labelMaintenance"; |
|||
|
|||
export default { |
|||
name: 'Manufacturer', |
|||
data () { |
|||
return { |
|||
// 导出 |
|||
exportData: [], |
|||
exportName: '图片维护' + this.dayjs().format('YYYYMMDDHHmmss'), |
|||
exportHeader: ['图片维护'], |
|||
exportFooter: [], |
|||
resultList: [], |
|||
userBuList: [], |
|||
// ======== 行高 ======== |
|||
height: 200, |
|||
// ======== 分页 ======== |
|||
pageIndex: 1, |
|||
pageSize: 50, |
|||
totalPage: 0, |
|||
// 条件查询 |
|||
searchData: { |
|||
site: this.$store.state.user.site, |
|||
userName: this.$store.state.user.name, |
|||
pictureDesc: '', |
|||
certificationNo: 'AA', |
|||
page: 1, |
|||
limit: 20 |
|||
}, |
|||
modalVisible: false, |
|||
modalData: { |
|||
pictureDesc: "", |
|||
certificationNo: "BB", |
|||
file: null, |
|||
fileName: "", |
|||
preview: "" |
|||
}, |
|||
// ======== 数据列表 ======== |
|||
dataList: [], |
|||
// 展示列集 |
|||
columnList: [ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 30008, |
|||
serialNumber: '30008Table1PictureDesc', |
|||
tableId: '30008Table1', |
|||
tableName: 'labelMaintenanceTable', |
|||
columnProp: 'pictureDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: 'Picture Name', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 30008, |
|||
serialNumber: '30008Table1CertificationNo', |
|||
tableId: '30008Table1', |
|||
tableName: 'labelMaintenanceTable', |
|||
columnProp: 'certificationNo', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: 'Box Classify', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 30008, |
|||
serialNumber: '30008Table1PictureBase64', |
|||
tableId: '30008Table1', |
|||
tableName: 'labelMaintenanceTable', |
|||
columnProp: 'pictureBase64', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '缩略图', |
|||
columnHidden: false, |
|||
columnImage: true, // 关键 |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 30008, |
|||
serialNumber: '30008Table1CreateBy', |
|||
tableId: '30008Table1', |
|||
tableName: 'labelMaintenanceTable', |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: 'Create By', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 30008, |
|||
serialNumber: '30008Table1CreateTime', |
|||
tableId: '30008Table1', |
|||
tableName: 'labelMaintenanceTable', |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: 'Create Time', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
} |
|||
], |
|||
rules: { |
|||
pictureDesc: [ |
|||
{required: true, message: ' ', trigger: 'blur'} |
|||
], |
|||
certificationNo: [ |
|||
{required: true, message: ' ', trigger: 'blur'} |
|||
], |
|||
file: [{ required: true, message: ' ', trigger: 'blur' }], |
|||
}, |
|||
// ======== 模态框开关控制 ======== |
|||
authSearch: false, |
|||
authSave: false, |
|||
authUpdate: false, |
|||
authDelete: false, |
|||
modalFlag: false, |
|||
modalDisableFlag: false, |
|||
menuId: this.$route.meta.menuId, |
|||
} |
|||
}, |
|||
|
|||
mounted () { |
|||
this.$nextTick(() => { |
|||
this.height = window.innerHeight - 180 |
|||
}) |
|||
}, |
|||
|
|||
created () { |
|||
// 动态列 |
|||
if (!this.isComponent) { |
|||
this.getTableUserColumn(this.$route.meta.menuId + 'table1', 1) |
|||
} |
|||
// 获取数据列表 |
|||
this.getDataList() |
|||
}, |
|||
|
|||
methods: { |
|||
|
|||
// 每页数 |
|||
sizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.pageIndex = 1 |
|||
this.getDataList() |
|||
}, |
|||
|
|||
// 当前页 |
|||
currentChangeHandle (val) { |
|||
this.pageIndex = val |
|||
this.getDataList() |
|||
}, |
|||
|
|||
// 获取数据列表 |
|||
getDataList () { |
|||
this.searchData.limit = this.pageSize |
|||
this.searchData.page = this.pageIndex |
|||
labelMaintenanceInfoSearch(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 |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
addModal() { |
|||
this.modalVisible = true; |
|||
this.resetForm(); |
|||
}, |
|||
beforeUpload() { |
|||
// 禁用自动上传 |
|||
return false; |
|||
}, |
|||
onFileChange(file) { |
|||
// 记录文件 |
|||
this.modalData.file = file.raw; |
|||
this.modalData.fileName = file.name; |
|||
// 预览图片 |
|||
let reader = new FileReader(); |
|||
reader.onload = e => { |
|||
this.modalData.preview = e.target.result; |
|||
}; |
|||
reader.readAsDataURL(file.raw); |
|||
}, |
|||
onFileRemove() { |
|||
// 清空文件 |
|||
this.modalData.file = null; |
|||
this.modalData.fileName = ""; |
|||
this.modalData.preview = ""; |
|||
}, |
|||
handleSubmit() { |
|||
// 判断文件是否上传 |
|||
if (!this.modalData.file) { |
|||
this.$message.error("请上传图片文件"); |
|||
return; |
|||
} |
|||
this.$refs.formRef.validate(valid => { |
|||
if (!valid) return; |
|||
let formData = new FormData(); |
|||
formData.append("pictureDesc", this.modalData.pictureDesc); |
|||
formData.append("certificationNo", this.modalData.certificationNo); |
|||
formData.append("createBy", this.$store.state.user.name); |
|||
formData.append("file", this.modalData.file); |
|||
uploadLabelMaintenancePicture(formData).then(({data}) => { |
|||
if (data.code === 0) { |
|||
this.$message.success("图片上传成功"); |
|||
this.getDataList(); |
|||
} else { |
|||
this.$message.error(data.msg); |
|||
} |
|||
this.modalVisible = false; |
|||
this.resetForm(); |
|||
}) |
|||
}) |
|||
}, |
|||
resetForm() { |
|||
this.modalData = { |
|||
pictureDesc: "", |
|||
certificationNo: "BB", |
|||
file: null, |
|||
fileName: "", |
|||
preview: "" |
|||
}; |
|||
if(this.$refs.formRef) this.$refs.formRef.clearValidate(); |
|||
}, |
|||
removeFile() { |
|||
this.modalData.file = null; |
|||
this.modalData.fileName = ''; |
|||
this.modalData.preview = ''; |
|||
// 重置上传控件的 input 文件框,否则再次选同一个文件时不会触发 change |
|||
this.$nextTick(() => { |
|||
let upload = this.$refs.uploadRef; |
|||
if (upload && upload.$refs.input) { |
|||
upload.$refs.input.value = null; |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
// 动态列开始 获取 用户保存的 格式列 |
|||
async getTableUserColumn (tableId, columnId) { |
|||
let queryTableUser = { |
|||
userId: this.$store.state.user.name, |
|||
functionId: this.$route.meta.menuId, |
|||
tableId: tableId, |
|||
status: true, |
|||
languageCode: this.$i18n.locale |
|||
} |
|||
await getTableUserListLanguage(queryTableUser).then(({data}) => { |
|||
if (data.rows.length > 0) { |
|||
switch (columnId) { |
|||
case 1: |
|||
this.columnList = data.rows |
|||
break |
|||
} |
|||
} else { |
|||
this.getColumnList(tableId, columnId) |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
// 获取 tableDefault 列 |
|||
async getColumnList (tableId, columnId) { |
|||
let queryTable = { |
|||
functionId: this.$route.meta.menuId, |
|||
tableId: tableId, |
|||
languageCode: this.$i18n.locale |
|||
} |
|||
await getTableDefaultListLanguage(queryTable).then(({data}) => { |
|||
if (data.rows.length > 0) { |
|||
switch (columnId) { |
|||
case 1: |
|||
this.columnList = data.rows |
|||
break |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
//获取按钮的权限数据 |
|||
getButtonAuthData () { |
|||
let searchFlag = this.isAuth(this.menuId + ':search') |
|||
let saveFlag = this.isAuth(this.menuId + ':save') |
|||
let updateFlag = this.isAuth(this.menuId + ':update') |
|||
let deleteFlag = this.isAuth(this.menuId + ':delete') |
|||
//处理页面的权限数据 |
|||
this.authSearch = !searchFlag |
|||
this.authSave = !saveFlag |
|||
this.authUpdate = !updateFlag |
|||
this.authDelete = !deleteFlag |
|||
}, |
|||
handleRowClick (row) { |
|||
if (this.isComponent) { |
|||
this.$emit('rowClick', row) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList"> |
|||
<el-form-item :label="'Picture Name'"> |
|||
<el-input v-model="searchData.pictureDesc" clearable style="width: 120px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item :label="'Box Classify'"> |
|||
<el-select clearable v-model="searchData.certificationNo" style="width: 120px"> |
|||
<el-option label="All" value="AA"></el-option> |
|||
<el-option label="Inside" value="BB"></el-option> |
|||
<el-option label="External" value="CC"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item :label="' '"> |
|||
<el-button type="primary" @click="getDataList">Query</el-button> |
|||
<el-button type="primary" @click="addModal">New</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table |
|||
:height="height" |
|||
:data="dataList" |
|||
border |
|||
style="width: 100%;margin-top: 5px"> |
|||
<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.columnImage && scope.row[item.columnProp] !== null && scope.row[item.columnProp] !== ''"> |
|||
<img :src="scope.row[item.columnProp]" |
|||
style="width: 100px; height: 80px; object-fit:contain;"/> |
|||
</span> |
|||
<span v-else> |
|||
{{ scope.row[item.columnProp] }} |
|||
</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="新增图片" |
|||
:visible.sync="modalVisible" |
|||
width="420px" |
|||
:close-on-click-modal="false" |
|||
v-drag |
|||
@close="resetForm" |
|||
:custom-class="'custom-dialog-body'" |
|||
style="height: 500px" |
|||
> |
|||
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" |
|||
style="margin-left: 7px;margin-top: -5px;" ref="formRef"> |
|||
<el-form-item label="Picture Name" prop="pictureDesc" :rules="rules.pictureDesc"> |
|||
<el-input v-model="modalData.pictureDesc" style="width:240px"/> |
|||
</el-form-item> |
|||
<el-form-item :label="'Box Classify'" prop="certificationNo" :rules="rules.certificationNo"> |
|||
<el-select clearable v-model="modalData.certificationNo" style="width: 120px"> |
|||
<el-option label="Inside" value="BB"></el-option> |
|||
<el-option label="External" value="CC"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="图片文件" prop="file" :rules="rules.file"> |
|||
<el-upload |
|||
class="upload-demo" |
|||
:show-file-list="false" |
|||
:before-upload="beforeUpload" |
|||
:on-change="onFileChange" |
|||
:on-remove="onFileRemove" |
|||
:auto-upload="false" |
|||
accept="image/*" |
|||
> |
|||
<div style="display: flex; align-items: center;"> |
|||
<el-input |
|||
v-model="modalData.fileName" |
|||
style="width: 240px;" |
|||
disabled |
|||
placeholder="未选择文件" |
|||
/> |
|||
<el-button type="primary" :disabled="modalData.fileName !== ''" style="margin-left: 15px">选择文件</el-button> |
|||
<el-button |
|||
type="danger" |
|||
style="margin-left: 10px" |
|||
v-if="modalData.fileName" |
|||
@click.stop="removeFile" |
|||
icon="el-icon-delete" |
|||
>清除</el-button> |
|||
</div> |
|||
</el-upload> |
|||
</el-form-item> |
|||
<el-form-item label="图片预览" style="height: 170px"> |
|||
|
|||
</el-form-item> |
|||
<el-form-item :label="''" style="height: 170px"> |
|||
<img |
|||
v-if="modalData.preview" |
|||
:src="modalData.preview" |
|||
alt="图片预览" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button @click="modalVisible = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSubmit">保存</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
.el-table /deep/ .cell{ |
|||
height: auto; |
|||
line-height: 1.5; |
|||
} |
|||
.custom-dialog-body .el-dialog__body { |
|||
max-height: 60vh; |
|||
overflow-y: auto; |
|||
padding-bottom: 20px; |
|||
} |
|||
|
|||
.custom-dialog-body .el-form-item__content { |
|||
overflow: hidden; /* 保证图片不会突破内容区 */ |
|||
} |
|||
|
|||
.custom-dialog-body img { |
|||
max-width: 200px; |
|||
max-height: 150px; |
|||
width: auto; |
|||
height: auto; |
|||
display: block; |
|||
margin: 10px 0 20px 0; |
|||
border: 1px solid #eee; |
|||
box-sizing: border-box; |
|||
object-fit: contain; |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue