<template>
|
<div class="app-container" style="padding-bottom:40px">
|
|
<div class="filter-container">
|
|
<el-row>
|
<el-input v-model="queryForm.enterprisename" class="filter-item" placeholder="企业名称" style="width: 30%;float: left"
|
@keyup.enter.native="queryHandle"/>
|
<el-select v-model="queryForm.type" clearable placeholder="请选择" style="float: left;margin-left: 10px"
|
value="">
|
<el-option
|
class="filter-item"
|
v-for="item in typeOptions"
|
:key="item.attributes"
|
:label="item.text"
|
:value="item.attributes">{{item.text}}
|
</el-option>
|
</el-select>
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
|
@click="queryHandle"/>
|
<el-button v-if="getBtnPermission('add')" class="filter-item" style="margin-left: 10px;" type="primary"
|
icon="el-icon-plus" @click="showCreateNewHandle">新增</el-button>
|
</el-row>
|
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="paramData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
@sort-change="sortChange"
|
>
|
|
<el-table-column type="index" label="序号" align="center" width="80"/>
|
<el-table-column label="生产厂家" prop="owner" align="center" sortable="custom" width="180">
|
<template slot-scope="scope">
|
<span>{{ scope.row.owner }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="类型" prop="type" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span v-for="(item,i) in typeOptions">{{item.attributes === scope.row.type?item.text:"" }}</span>
|
|
</template>
|
</el-table-column>
|
|
<el-table-column label="打印浓度" prop="darkness" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.darkness }}</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column label="左标签X轴基准" prop="leftBaseX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.leftBaseX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="右标签Y轴基准" prop="rightBaseX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.rightBaseX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="左框线X轴位置" prop="leftFrameX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.leftFrameX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="右框线X轴位置" prop="rightFrameX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.rightFrameX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="框宽" prop="frameWidth" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.frameWidth }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="框高" prop="frameHeight" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.frameHeight }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="框Y轴基准" prop="frameY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.frameY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="标题X轴偏移量" prop="titleOffsetX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.titleOffsetX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="标题Y轴" prop="titleY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.titleY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="条形码Y轴" prop="barcodeY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.barcodeY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="条形码宽度" prop="barcodeWidth" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.barcodeWidth }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="条形码放大倍率" prop="barcodeWidthRadio" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.barcodeWidthRadio }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="条形码高度" prop="barcodeHeight" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.barcodeHeight }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="二维码模" prop="qrCodeModel" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.qrCodeModel }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="二维码倍率" prop="qrCodeMagnification" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.qrCodeMagnification }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="二维码X" prop="qrX" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.qrX }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="二维码Y" prop="qrY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.qrY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="字体1大小" prop="fontsize1" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.fontsize1 }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="字体2大小" prop="fontsize1" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.fontsize2 }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="字体3大小" prop="fontsize3" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.fontsize3 }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="二维码字体Y" prop="barcodeTextY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.barcodeTextY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="产品名称Y" prop="itemNameY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.itemNameY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="产品类型Y" prop="typeY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.typeY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="日期Y" prop="dateY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.dateY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产厂家Y" prop="manufacturerY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.manufacturerY }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产厂家Y2" prop="manufacturerY2" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.manufacturerY2 }}</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column label="总计Y" prop="totalY" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.totalY }}</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" width="240" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button v-if="getBtnPermission('edit')" type="text" @click="view(scope.row)">查看</el-button>
|
<el-button type="text" v-if="userType === 1" @click="edit(scope.row)">修改</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;margin:3px"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
<edit-dialog ref="edit-dog" @reload="getParamList()"></edit-dialog>
|
<view-dialog ref="view-dog" ></view-dialog>
|
</div>
|
</template>
|
|
<script>
|
import Cookies from 'js-cookie'
|
import {checkBtnPermission} from "../../utils/permission";
|
import {
|
createNewProduct,
|
createProduct,
|
deleteProduct,
|
getManufacturerTree, getPermitLevelTree,
|
productList,
|
updateProduct
|
} from "../../api/product";
|
import {parseError} from "../../utils/messageDialog";
|
import {computePageCount} from "../../utils";
|
import {mapGetters} from "vuex";
|
import {dictionaryAllItems} from '@/api/dictionary'
|
import {MessageBox} from 'element-ui'
|
import { getToken } from '@/utils/auth'
|
import {paramList} from "../../api/contract";
|
import editDialog from './components/setParam/editDialog'
|
import viewDialog from './components/setParam/viewDialog'
|
const exampleFile = require('@/assets/example/product.xlsx')
|
|
export default {
|
name: "setParam",
|
data() {
|
return {
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
tableKey: 0,
|
fileList:[],
|
uploadBtnControl:false,
|
actionUrlPrefixx:process.env.BASE_API,
|
headers:{'Authorization':getToken()},
|
paramData: null,
|
listLoading: true,
|
manufacturerTree: [],
|
dataForm: {
|
id: '',
|
name: '',
|
type: '',
|
secondaryType:'',
|
directionCode: '',
|
manufacturer: '',
|
specification: '',
|
explosiveContent: '',
|
level: '',
|
packing: '',
|
boxNumber: '',
|
productDate: ''
|
},
|
queryForm: {
|
enterprisename: '',
|
type: '',
|
},
|
dialogFormVisible: false,
|
dialogStatus: '',
|
dataFormRules: {
|
name: [{required: true, message: '产品名不能为空', trigger: 'blur'}],
|
type: [{required: true, message: '产品类型不能为空', trigger: 'blur'}],
|
manufacturer: [{required: true, message: '生产厂家不能为空', trigger: 'blur'}],
|
specification: [{required: true, message: '规格不能为空', trigger: 'blur'}],
|
explosiveContent: [{required: true, message: '含药量不能为空', trigger: 'blur'}],
|
level: [{required: true, message: '产品级别不能为空', trigger: 'blur'}],
|
boxNumber: [{required: true, message: '箱含量不能为空', trigger: 'blur'}],
|
productDate: [{required: true, message: '生产日期不能为空', trigger: 'blur'}],
|
},
|
levelOptions: [],
|
permitLevelOptions:[],
|
typeOptions: [{"text":"内包装设置","attributes":1},{"text":"外包装设置","attributes":2}],
|
secondaryOptions:[],
|
|
}
|
},
|
created() {
|
this.getParamList();
|
this.getDictionaryItemLevelList();
|
},
|
mounted() {
|
getManufacturerTree().then(res => {
|
this.manufacturerTree = (res.data);
|
})
|
},
|
components:{
|
editDialog,
|
viewDialog,
|
},
|
computed: {
|
...mapGetters([
|
'userType',
|
'name'
|
])
|
},
|
methods: {
|
async selectChange(){
|
this.$forceUpdate();
|
this.dataForm.level = '';
|
let res = await getPermitLevelTree(this.dataForm.secondaryType);
|
this.permitLevelOptions = res.data;
|
},
|
getDictionaryItemLevelList() {
|
const _this = this
|
if (_this.levelOptions && _this.levelOptions.length > 0) {
|
return
|
}
|
const params = {}
|
params['dictionaryType'] = '产品级别';
|
dictionaryAllItems(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.levelOptions = res.result
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
},
|
getParamList() {
|
const _this = this;
|
const params = {};
|
params['pageIndex'] = _this.currentPage;
|
params['pageSize'] = _this.pageSize;
|
params['sort'] = _this.sort;
|
params['order'] = _this.order;
|
const userName = Cookies.get('userName');
|
const name = Cookies.get('name');
|
params['operator'] = name + '(' + userName + ')';
|
for (const i in _this.queryForm) {
|
if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
|
params[i] = _this.queryForm[i]
|
}
|
}
|
_this.listLoading = true
|
paramList(params).then(response => {
|
const res = response.data;
|
if (res.code === "200") {
|
const result = res.result;
|
_this.recordTotal = result.totalCount;
|
_this.pageSize = result.pageSize;
|
_this.pageTotal = computePageCount(result.totalCount, result.pageSize);
|
_this.currentPage = result.pageIndex;
|
_this.paramData = result.result
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
_this.listLoading = false
|
}).catch(error => {
|
_this.listLoading = false
|
parseError({error: error, vm: _this})
|
})
|
},
|
submitHandle:function(){
|
if (this.dialogStatus === 'create') {
|
this.createHandle();
|
}else if (this.dialogStatus === 'createNew') {
|
this.createNewHandle();
|
}else {
|
// this.updateHandle();
|
this.dialogFormVisible = false;
|
}
|
},
|
createHandle: function () {
|
const _this = this
|
const userName = Cookies.get('userName');
|
const name = Cookies.get('name');
|
this.$refs['dataForm'].validate((valid) => {
|
if (valid) {
|
_this.dataForm['createdBy'] = name + '(' + userName + ')';
|
createProduct(_this.dataForm).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '创建成功',
|
type: 'success'
|
});
|
_this.getParamList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}
|
})
|
},
|
createNewHandle: function () {
|
const _this = this;
|
const userName = Cookies.get('userName');
|
const name = Cookies.get('name');
|
this.$refs['dataForm'].validate((valid) => {
|
if (valid) {
|
_this.dataForm['createdBy'] = name + '(' + userName + ')';
|
createNewProduct(_this.dataForm).then(response => {
|
const res = response.data;
|
if (res.code === "200") {
|
_this.dialogFormVisible = false;
|
_this.$message({
|
message: '创建成功',
|
type: 'success'
|
});
|
_this.getParamList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}
|
})
|
},
|
deleteHandle: function (row) {
|
const _this = this
|
MessageBox.confirm('确定删除信息', '确定删除', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
|
_this.deleteAction(row)
|
}).catch(() => {
|
console.log('已取消删除')
|
})
|
},
|
deleteAction: function (row) {
|
const _this = this;
|
const params = {}
|
params['id'] = row.id;
|
const userName = Cookies.get('userName');
|
const name = Cookies.get('name');
|
params['modifiedBy'] = name + '(' + userName + ')';
|
_this.dataFormSetValue(row);
|
deleteProduct(_this.dataForm).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.$message({
|
message: '删除成功',
|
type: 'success'
|
})
|
_this.getParamList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
},
|
refreshHandle: function () {
|
this.getParamList()
|
},
|
queryHandle: function () {
|
// if (this.queryForm.name == '') {
|
// parseError({ error: '请输入查询条件', vm: this })
|
// return
|
// }
|
this.currentPage = 1
|
this.getParamList()
|
},
|
resetDataForm() {
|
this.dataForm = {
|
id: '',
|
name: '',
|
type: '',
|
directionCode: '',
|
manufacturer: '',
|
specification: '',
|
explosiveContent: '',
|
level: '',
|
packing: '',
|
boxNumber: '',
|
productDate: ''
|
}
|
},
|
showCreateHandle() {
|
this.resetDataForm();
|
this.dialogStatus = 'create';
|
this.dialogFormVisible = true;
|
this.$nextTick(() => {
|
this.$refs['dataForm'].clearValidate()
|
})
|
},
|
updateHandle() {
|
this.$refs['dataForm'].validate((valid) => {
|
const _this = this
|
if (valid) {
|
const userName = Cookies.get('userName');
|
const name = Cookies.get('name');
|
_this.dataForm['modifiedBy'] = name + '(' + userName + ')';
|
updateProduct(_this.dataForm).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '更新成功',
|
type: 'success'
|
});
|
_this.getParamList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}
|
})
|
},
|
showEditHandle: function (row) {
|
this.resetDataForm();
|
this.dialogStatus = 'editor';
|
this.dataFormSetValue(row);
|
this.dialogFormVisible = true;
|
this.$nextTick(() => {
|
this.$refs['dataForm'].clearValidate()
|
})
|
},
|
dataFormSetValue(row) {
|
this.dataForm.id = row.id;
|
this.dataForm.name = row.name;
|
this.dataForm.type = row.type;
|
this.dataForm.directionCode = row.directionCode;
|
this.dataForm.manufacturer = row.companyNumber;
|
this.dataForm.specification = row.specification;
|
this.dataForm.explosiveContent = row.explosiveContent;
|
this.dataForm.level = row.level;
|
this.dataForm.packing = row.packing;
|
this.dataForm.boxNumber = row.boxNumber;
|
this.dataForm.productDate = row.productDate;
|
},
|
handleSizeChange: function (val) {
|
this.pageSize = val
|
this.currentPage = 1
|
this.getParamList()
|
},
|
handleCurrentChange: function (val) {
|
this.currentPage = val
|
this.getParamList()
|
},
|
getBtnPermission(btnType) {
|
return checkBtnPermission(this.userType, btnType)
|
},
|
sortChange(param) {
|
this.sort = param.prop;
|
this.order = param.order;
|
this.getParamList();
|
},
|
beforeUploadHandler(file){
|
const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|| file.type === 'application/vnd.ms-excel'
|
if (!isExcel) this.$message.error('上传文件须要是Excel文件');
|
if (isExcel) this.uploadBtnControl = true;
|
return isExcel
|
},
|
|
onSuccessHandler(res, file, fileList){
|
console.log(res)
|
this.fileList = []
|
this.uploadBtnControl = false
|
if (res.code === '200') {
|
this.$message.success("导入成功")
|
}
|
if (res.code === '400'){
|
this.$message.warning(res.message)
|
}
|
|
},
|
onErrorHandler(){
|
this.fileList = []
|
this.uploadBtnControl = false
|
this.$message.warning("发生错误,请联系管理员")
|
},
|
handleCommand(command) {
|
if (command === 'download')
|
window.open(exampleFile, '_blank')
|
},
|
|
showCreateNewHandle() {
|
this.$refs['edit-dog'].showCreate("新建配置")
|
},
|
edit(row){
|
this.$refs['edit-dog'].showEdit("修改配置",row)
|
},
|
view(row){
|
this.$refs['view-dog'].show(row)
|
}
|
|
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|