扫码关联

yanshishuju
zane 9 months ago
parent 92625c7f4b
commit 35c6af781d

@ -15,3 +15,29 @@ export function delRelCode(query) {
params: query params: query
}); });
} }
export function addRelCode(query) {
return axios({
url: "/udiwms/relCode/batch/add",
method: "post",
data: query
});
}
export function getDetailList(query) {
return axios({
url: "/udiwms/relCode/detail/filter",
method: "get",
params: query
});
}
export function scanCodeRelCode(query) {
return axios({
url: "/udiwms/relCode/detail/scanCode",
method: "post",
data: query
});
}

@ -3,34 +3,38 @@
<el-card class="el-card"> <el-card class="el-card">
<el-form :model="filterQuery" class="query-form" label-width="100px" v-if="showSearch"> <el-form :model="filterQuery" class="query-form" label-width="100px" v-if="showSearch">
<el-row> <el-row>
<!-- <el-col :span="10">--> <el-col :span="4">
<!-- <el-form-item label="udi">--> <el-form-item label="追溯码:">
<!-- <el-input v-model="filterQuery.code" style="width: 90%" placeholder="请输入udi" clearable></el-input>--> <el-input v-model="filterQuery.curCode" placeholder="请输入追溯码" clearable></el-input>
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="10">
<el-form-item label="产品编码">
<el-input v-model="filterQuery.productCode" style="width: 90%" placeholder="请输入产品编码"
clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="4">
<el-form-item label="选择层级:">
<!-- <el-row> <el-input v-model="filterQuery.packLayer" placeholder="请输入层级信息" clearable></el-input>
<el-col :span="10">
<el-form-item label="规格型号">
<el-input v-model="filterQuery.ggxh" style="width: 90%" placeholder="请输入规格型号" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4">
<el-col :span="10"> <el-form-item label="批次号:">
<el-form-item label="产品名称"> <el-input v-model="filterQuery.packLayer" placeholder="请输入批次号" clearable></el-input>
<el-input v-model="filterQuery.cpmctymc" style="width: 90%" placeholder="请输入产品名称"
clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> --> <el-col :span="4">
<el-form-item label="有效时间:">
<el-date-picker
style="width: 100%"
:picker-options="pickerOptions"
v-model="actDateRange"
type="daterange"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<div class="top-right-btn"> <div class="top-right-btn">
@ -38,7 +42,24 @@
<el-button icon="el-icon-view" type="primary" @click="hideSearch">/</el-button> <el-button icon="el-icon-view" type="primary" @click="hideSearch">/</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button> <el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="el-icon-search" @click="onSubmitFind"></el-button> <el-button type="primary" icon="el-icon-search" @click="onSubmitFind"></el-button>
<el-button type="primary" icon="el-icon-plus" @click="newDistributionForm()" :loading="loading">新增</el-button> <el-button type="primary" icon="el-icon-plus" @click="newDistributionForm()" :loading="loading">手动新增</el-button>
<el-upload
:action="action"
accept=".xml"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:on-success="handleSuccess"
:on-progress="handleProgress"
:on-error="handleError"
:before-upload="beforeUpload"
:limit="5"
:on-exceed="handleExceed"
:file-list="fileList"
:data="extraData">
<el-button size="small" icon="el-icon-upload" type="primary">文件上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传xml文件且不超过5M</div> -->
</el-upload>
</el-button-group> </el-button-group>
</div> </div>
@ -49,16 +70,16 @@
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
style="width: 100%" row-key="id" > style="width: 100%" row-key="id" >
<el-table-column label="序号" type="index" width="60"></el-table-column> <el-table-column label="序号" type="index" width="60"></el-table-column>
<el-table-column label="上级编码" prop="parentCode"></el-table-column> <el-table-column label="追溯码" prop="curCode"></el-table-column>
<el-table-column label="产品编码" prop="productCode"></el-table-column> <el-table-column label="父级码" prop="parentCode"></el-table-column>
<el-table-column label="类型编码" prop="subTypeNo"></el-table-column> <el-table-column label="层级" prop="packLayer"></el-table-column>
<el-table-column label="包装比例" prop="cascadeRatio"></el-table-column> <el-table-column label="装箱类型" prop="packageSpec"></el-table-column>
<el-table-column label="包装规格" prop="packageSpec"></el-table-column>
<el-table-column label="备注" prop="comment"></el-table-column>
<el-table-column label="批次号" prop="batchNo"></el-table-column> <el-table-column label="批次号" prop="batchNo"></el-table-column>
<el-table-column label="生产日期" prop="madeDate"></el-table-column> <el-table-column label="生产日期" prop="madeDate"></el-table-column>
<el-table-column label="有效期至" prop="validateDate"></el-table-column> <el-table-column label="失效日期" prop="validateDate"></el-table-column>
<el-table-column label="生产车间" prop="workShop"></el-table-column> <el-table-column label="产品编码" prop="productCode"></el-table-column>
<el-table-column label="备注" prop="comment"></el-table-column>
<!-- <el-table-column label="生产车间" prop="workShop"></el-table-column>
<el-table-column label="生产线" prop="lineName"></el-table-column> <el-table-column label="生产线" prop="lineName"></el-table-column>
<el-table-column label="负责人" prop="lineManager"></el-table-column> <el-table-column label="负责人" prop="lineManager"></el-table-column>
<el-table-column label="操作" width="120px"> <el-table-column label="操作" width="120px">
@ -67,7 +88,7 @@
</el-button> </el-button>
<el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)">删除</el-button> <el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column> -->
</el-table> </el-table>
<pagination <pagination
@ -82,28 +103,29 @@
<el-dialog <el-dialog
:title="formName" :title="formName"
:visible.sync="newSpDistributionVisible" :visible.sync="newSpDistributionVisible"
width="80%" width="85%"
v-if="newSpDistributionVisible" append-to-body
@close='closeDialog'
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
v-if="newSpDistributionVisible"
@close='closeDialog'
> >
<relCodeEdit <relCodeEdit
:closeDialog="closeDialog" :closeDialog="closeDialog"
:idQuery="idQuery" :orderQuery="idQuery"
></relCodeEdit> ></relCodeEdit>
</el-dialog> </el-dialog>
</el-card> </el-card>
</div> </div>
</template> </template>
<script> <script>
import {getList,delRelCode} from "@/api/collect/relCode"; import {getDetailList,delRelCode} from "@/api/collect/relCode";
import relCodeEdit from "@/views/collect/relCode/relCodeEdit" import relCodeEdit from "@/views/collect/relCode/relCodeEdit"
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
export default { export default {
name: "relCode",
data() { data() {
return { return {
showSearch: true, showSearch: true,
@ -115,9 +137,7 @@ export default {
thirdSysFk: "", thirdSysFk: "",
page: 1, page: 1,
limit: 10, limit: 10,
corpName: null, corpName: null
type: 1,
editStatus: 1,
}, },
isExpandAll: true, isExpandAll: true,
idQuery: null, idQuery: null,
@ -157,6 +177,10 @@ export default {
}, },
], ],
}, },
extraData:{"uuid": "upload-xml"},
uploadLoading: false,
action: process.env.VUE_APP_BASE_API + "/udiwms/relCode/batch/xmlUpload",
fileList: []
}; };
}, },
@ -218,7 +242,7 @@ export default {
}, },
getList() { getList() {
this.loading = true; this.loading = true;
getList(this.filterQuery) getDetailList(this.filterQuery)
.then((response) => { .then((response) => {
if (response.code == 20000) { if (response.code == 20000) {
this.list = response.data.list || []; this.list = response.data.list || [];
@ -238,6 +262,51 @@ export default {
this.filterQuery.page = val.page; this.filterQuery.page = val.page;
this.getList(); this.getList();
}, },
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${ file.name }`);
},
handleSuccess(res, file, fileList) {
fileList = fileList.filter(item => item.response.code === 20000);
this.fileList = fileList;
if (res.code === 20000) {
this.$message.success(res.message);
} else {
this.$message.error(res.message);
}
this.uploadLoading.close();
},
beforeUpload(file) {
const isXML = file.type === 'text/xml';
const isLt5M = file.size / 1024 / 1024 < 5;
if (!isXML) {
this.$message.error('上传文件只能是 XML 格式!');
}
if (!isLt5M) {
this.$message.error('上传文件大小不能超过 5MB!');
}
return isXML && isLt5M;
},
handleProgress() {
this.uploadLoading = this.$loading({
lock: true,
text: '文件上传中…',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.5)'
});
},
handleError() {
this.uploadLoading.close();
this.$message.error('文件上传失败,请检查文件大小或文件格式');
}
}, },
components: { components: {
relCodeEdit, relCodeEdit,

@ -1,237 +1,584 @@
<template> <template>
<div> <div>
<el-card class="el-card"> <el-form
<el-form :model="filterQuery" class="query-form" label-width="100px" > :model="relFormData"
:rules="formRules"
ref="dataForm"
@submit.native.prevent
label-width="110px"
>
<el-card>
<el-row style="margin-bottom: 8px">
<el-button-group
style="display: flex; margin-top: 5px; float: right"
>
<el-button size="mini" type="primary" @click.native="submit()" :loading="submitLoading"
style="margin-right: 8px;border-radius: 5%;"
>添加完成
</el-button>
</el-button-group>
</el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="11">
<el-form-item label="上级产品"> <el-form-item prop="productCode" class="query-form-item" label="产品编码:">
<el-input v-model="filterQuery.upProduct " :disabled="isUp" style="width: 80%" placeholder="请输入多级产品" clearable></el-input> <el-input
<el-button style="margin-left: 10px" :disabled="isUp" type="primary" @click="addUpProduct()"></el-button> v-model="relFormData.productCode"
auto-complete="off"
style="width: 90%"
clearable
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="subTypeNo" class="query-form-item" label="类型编码:">
<el-input
v-model="relFormData.subTypeNo"
auto-complete="off"
style="width: 90%"
clearable
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="cascadeRatio" class="query-form-item" label="包装比例:">
<el-input
v-model="relFormData.cascadeRatio"
auto-complete="off"
style="width: 90%"
clearable
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="packageSpec" class="query-form-item" label="包装规格:">
<el-input
v-model="relFormData.packageSpec"
auto-complete="off"
style="width: 90%"
clearable
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="madeDate" class="query-form-item" label="生产日期:">
<el-date-picker
v-model="relFormData.madeDate"
type="datetime"
placeholder="日期"
clearable
value-format="yyyy-MM-dd HH:mm:ss"
:disabled="true"
style="width: 90%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="validateDate" class="query-form-item" label="失效日期:">
<el-date-picker
v-model="relFormData.validateDate"
type="datetime"
placeholder="日期"
clearable
value-format="yyyy-MM-dd HH:mm:ss"
:disabled="true"
style="width: 90%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="comment" class="query-form-item" label="备注:">
<el-input
v-model="relFormData.comment"
auto-complete="off"
clearable
style="width: 90%"
placeholder="请输入备注"
></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="18">
<el-form-item label="下级产品"> <el-form-item prop="code" label="扫码录入:">
<el-input v-model="filterQuery.lowProduct" style="width: 80%" placeholder="请输入下级产品" clearable></el-input> <el-input
<el-button style="margin-left: 10px" :disabled="isLow" type="primary" @click="addLowProduct()"></el-button> id="inputer"
@focus="getInputFocus($event)"
@keypress.enter.native="enterKey($event)"
ref="inputRef"
style="ime-mode: disabled"
type="tel"
placeholder="请点击输入框进行扫码设置或者扫码录入"
v-model="scanCode"
></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-button-group>
<el-button
type="primary"
size="mini"
@click.native.stop="addCode()"
style="margin-left: 15px"
>添加
</el-button>
</el-button-group>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="6">
<el-upload <el-form-item prop="checked" label="">
class="upload-xml" <el-checkbox v-model="checked"></el-checkbox>
:action="action" </el-form-item>
accept=".xml"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:on-success="handleSuccess"
:on-progress="handleProgress"
:on-error="handleError"
:before-upload="beforeUpload"
:limit="5"
:on-exceed="handleExceed"
:file-list="fileList"
:data="extraData">
<el-button size="small" type="primary">上传并保存</el-button>
<div slot="tip" class="el-upload__tip">只能上传xml文件且不超过5M</div>
</el-upload>
</el-col> </el-col>
</el-row> </el-row>
</el-form>
<el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row> <el-alert
<el-table-column label="序号" type="index" width="60"></el-table-column> title="扫码结果:"
<el-table-column label="UDI码" prop="code"></el-table-column> :type="scanResultType"
<el-table-column label="产品编码" prop="nameCode"></el-table-column> :closable="false"
<el-table-column label="产品名称" prop="cpmctymc"></el-table-column> :description="result">
<el-table-column label="规格型号" prop="ggxh"></el-table-column> </el-alert>
<el-table-column label="序列号" prop="serialNo"></el-table-column> <el-alert
<el-table-column label="生产企业" prop="manufactory"></el-table-column> v-if="warnVisible"
<el-table-column label="计量单位" prop="measname"></el-table-column> title="警告信息:"
<el-table-column label="创建时间" prop="createTime"></el-table-column> type="warning"
</el-table> :closable="true"
:dangerouslyUseHTMLString="true"
<pagination :description="warnResult">
v-show="total>0" </el-alert>
:total="total" <el-alert
:page.sync="filterQuery.page" v-if="errVisible"
:limit.sync="filterQuery.limit" title="错误信息:"
@pagination="handleCurrentChange" type="warning"
></pagination> :closable="true"
:dangerouslyUseHTMLString="true"
:description="errResult">
</el-alert>
</el-card> </el-card>
</el-form>
<el-tabs type="border-card" style="margin: 15px">
<el-tab-pane label="关联详情">
<div>
<el-text tag="b" size="large">待关联数量<span>0</span></el-text>
<el-text tag="b">总关联数量<span>0</span></el-text>
<el-text tag="b" size="large">父级编码<span>{{ a || '暂未录入'}}</span></el-text>
</div>
<div>
<el-table v-loading="loading"
:data="detailList"
style="width: 100%;" max-height="350" height="350"
border
:row-style="rowStyle"
ref="multipleTable">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column label="追溯码" width="150" prop="curCode" show-overflow-tooltip></el-table-column>
<el-table-column label="层级" width="150" prop="packLayer" show-overflow-tooltip></el-table-column>
<el-table-column label="父级编码" width="150" prop="parentCode" show-overflow-tooltip></el-table-column>
</el-table>
</div>
</el-tab-pane>
</el-tabs>
</div> </div>
</template> </template>
<script> <script>
import {checkLowProduct, checkUpProduct, getDelectList, getList} from "@/api/inout/ioCodeRel"; import {addRelCode,scanCodeRelCode} from "@/api/collect/relCode";
import relCodeDetail from "@/views/collect/relCode/relCodeDetail";
import A from "@/plugins/KeyScaner";
export default { export default {
name: "relCodeEdit",
props: { props: {
closeDialog: { closeDialog: {
type: Function, type: Function,
required: true, required: true,
}, },
idQuery: { orderQuery: {
type: Object, type: Object,
required: true, required: true,
default: {}
},
resetKey: {
type: Function,
required: true
}, },
},
watch: {
resetKey(newVal, oldVal) {
this.$refs.inputRef.focus();
}
}, },
data() { data() {
return { return {
showSearch: true, userInfo: {
newSpDistributionVisible: false, inv: this.$store.getters.locInvName,
filterQuery: { deptName: this.$store.getters.locDeptName,
upProduct:'', userName: this.$store.getters.name,
lowProduct:'', userId: this.$store.getters.userId,
page: 1, companyName: this.$store.getters.companyName,
limit: 10,
},
isLow:true,
isUp:false,
upCode:null,
formName:null,
loading:false,
list:[],
formData:null,
total:0,
extraData:{"uuid": "upload-xml"},
uploadLoading: false,
action: process.env.VUE_APP_BASE_API + "/udiwms/relCode/batch/xmlUpload",
fileList: []
};
}, },
//
methods: { codeFormData: {
onReset() { code: "",
this.$router.push({ batchNo: null,
path: "", produceDate: null,
}); expireDate: null,
this.filterQuery = { serialNo: null,
page: 1, relId: null,
limit: 10, },
relFormData: {
productCode: null,
subTypeNo: null,
cascadeRatio: null,
packageSpec: null,
comment: null,
batchNo: null,
madeDate: null,
validateDate: null,
workShop: null,
lineName: null,
lineManager: null,
},
detailList: [],
checkPreInArray: [],
errView: 0,
isCodeAlive: true,
isCheckResultAlive: true,
isBizDetailAlive: true,
isCodeDetailAlive: true,
isSickerAlive: true,
actionEnable: false,
formRules: {
productCode: [
{required: true, message: "请输入产品编号", trigger: "blur"},
],
subTypeNo: [
{required: true, message: "请输入类型编号", trigger: "blur"},
],
cascadeRatio: [
{required: true, message: "请输入包装比例", trigger: "change"},
],
packageSpec: [
{required: true, message: "请输入包装规格", trigger: "change"},
],
batchNo: [
{required: true, message: "请输入批次号", trigger: "blur"},
],
madeDate: [
{required: true, message: "请选入生产日期", trigger: "blur"},
],
validateDate: [
{required: true, message: "请选入有效日期", trigger: "blur"},
],
},
isScan: true,
scanText: "扫码录入:",
corpOrderIdDisabled: false,
isSupVesion: false,
loading: false,
index: null,
formVisible: false,
deleteLoading: false,
orderNo: null,
fromStorageOptions: [],
curRow: null,
dialogTableVisible: false,
selectRlVisible: false,
selectSpaceVisible: false,
sitcomScan: false,
sictomText: "",
originCode: "",
checkSuccess: false,
codeDetail: null,
fromDeptOptions: [],
submitLoading: false,
scanCode: "",
isSuccess: false,
result: "",
scanResultType: "success",
splitType: null,
warnResult: "",
errResult: "",
warnVisible: false,
errVisible: false,
checked:true
}; };
this.getList();
}, },
handleCurrentChange(val) { components: {
this.filterQuery.page = val.page; relCodeDetail
this.getList();
}, },
getList() { methods: {
if (this.filterQuery.upProduct!=null){ splitChange() {
this.filterQuery.parentCode=this.filterQuery.upProduct this.$refs.inputRef.focus();
} },
getDelectList(this.filterQuery) //
.then((response) => { addCode() {
if (response.code == 20000) { let tQuery = {
this.list = response.data.list || []; parentCode: this.scanCode,
this.total = response.data.total || 0; };
} else { scanCodeRelCode(tQuery).then((response) => {
if (response.code === 20000) {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
this.isSuccess = true;
// this.codeFormData.code = response.data.code;
console.log("====response=======",response.data)
this.detailList.push(response.data);
this.printCodeResult(response.data);
this.scanCode = ""
}else{
this.$message.error(response.message); this.$message.error(response.message);
} }
this.loading = false; this.loading = false;
}) })
.catch(() => { .catch(() => {
this.loading = false; this.loading = false;
this.list = [];
this.total = 0;
}); });
}, },
addUpProduct(){
checkUpProduct({code:this.filterQuery.upProduct}).then((res)=>{
if(res.code==20000){ refreshCodesPanel() {
this.isLow=false; this.warnVisible = false;
this.isUp=true; this.errVisible = false;
}else{
this.$message.error(res.message); this.isCodeAlive = false;
this.isBizDetailAlive = false;
this.isCodeDetailAlive = false;
this.isSickerAlive = false;
this.$nextTick(() => {
//
this.isCodeAlive = true;
this.isBizDetailAlive = true;
this.isCodeDetailAlive = true;
this.isSickerAlive = true;
});
//
if (this.isCheckResultAlive) {
this.isCheckResultAlive = false;
this.$nextTick(() => {
//
this.isCheckResultAlive = true;
});
} }
}).catch(()=>{
this.$message.error("扫码错误!");
})
}, },
addLowProduct(){
checkLowProduct({lowCode:this.filterQuery.lowProduct,upCode:this.filterQuery.upProduct}).then((res)=>{ refreshOrder(orderQuery) {
if(res.code==20000){ this.relFormData = orderQuery;
this.getList(); this.scanCode = "";
}else{ this.result = "";
this.$message.error(res.message); this.refreshCodesPanel()
},
submit(val) {
// if(this.detailList == null || this.detailList.length == 0){
// this.$message.error("");
// return;
// }
this.loading = true;
let tQuery = Object.assign(this.relFormData);
tQuery.detailList = this.detailList;
addRelCode(tQuery).then((response) => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("保存成功!");
this.clearRel();
} else {
this.$message.error(response.message);
} }
}).catch(()=>{
this.$message.error("扫码错误!");
}) })
.catch(() => {
this.loading = false;
this.clearRel();
});
}, },
handleRemove(file, fileList) { //
console.log(file, fileList); resetForm() {
}, if (this.$refs["dataForm"]) {
handlePreview(file) { //
console.log(file); this.$refs["dataForm"].clearValidate();
}, //
handleExceed(files, fileList) { this.$refs["dataForm"].resetFields();
this.$message.warning(`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${ file.name }`);
},
handleSuccess(res, file, fileList) {
fileList = fileList.filter(item => item.response.code === 20000);
this.fileList = fileList;
if (res.code === 20000) {
this.$message.success(res.message);
} else {
this.$message.error(res.message);
} }
this.uploadLoading.close();
}, },
beforeUpload(file) { enterKey(event) {
const isXML = file.type === 'text/xml'; this.addCode()
const isLt5M = file.size / 1024 / 1024 < 5; },
if (!isXML) { printCodeResult(data, isSuccess) {
this.$message.error('上传文件只能是 XML 格式!'); const resultParts = ["扫码解析结果:" + data.curCode];
if (data.packLayer) {
resultParts.push("层级标识: " + data.packLayer);
} }
if (!isLt5M) { if (data.parentCode) {
this.$message.error('上传文件大小不能超过 5MB!'); resultParts.push("父级编码: " + data.parentCode);
} }
return isXML && isLt5M; this.result = resultParts.join(" , ");
},
handleProgress() {
this.uploadLoading = this.$loading({
lock: true,
text: '文件上传中…',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.5)'
});
}, },
handleError() { getInputFocus(event) {
this.uploadLoading.close(); event.currentTarget.select();
this.$message.error('文件上传失败,请检查文件大小或文件格式'); },
clearRel() {
this.relFormData = {
productCode: null,
subTypeNo: null,
cascadeRatio: null,
packageSpec: null,
comment: null,
batchNo: null,
madeDate: null,
validateDate: null,
workShop: null,
lineName: null,
lineManager: null,
detailList: [],
} }
this.scanCode = "";
this.result = "";
this.detailList = [];
// this.refreshCodesPanel()
},
}, },
components: {},
filters: {}, filters: {},
mounted() { mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
var that = this;
var inputer = document.getElementById("inputer");
window.sc = new A.KeyScaner(inputer); //DOM
sc.onInput = function (text) {
if (text.includes("delete")) {
that.codeFormData.code = "";
that.sictomText = "";
that.originCode = "";
return;
} }
, if (that.sitcomScan) {
created() { let tempTxt = text;
if(this.idQuery.id!=null){ let str = tempTxt.replace(/[\r]/g, "");
this.filterQuery.upProduct=this.idQuery.parentCode that.sictomText = that.sictomText + str;
this.isLow=false; that.codeFormData.code = that.sictomText;
this.isUp=true; } else {
this.getList(); that.codeFormData.code = text;
} }
};
inputer.focus();
this.$refs.inputRef.focus();
},
beforeDestroy() {
} },
, created() {
}
; },
};
</script> </script>
<style scoped> <style scoped>
.upload-xml { .scroll-alert {
margin-left: 100px; width: 100%; /* 或者你需要的宽度 */
overflow: hidden;
white-space: nowrap;
box-sizing: border-box;
/*border: 1px solid #f56c6c; !* 类似于 Element UI 警告框的边框 *!*/
background-color: rgba(255, 235, 59, 0.1); /* 类似于 Element UI 警告框的背景色 */
padding: 10px;
position: relative;
}
.scroll-text {
display: inline-block;
padding-left: 100%; /* 初始位置在容器右侧 */
animation: scroll 10s linear infinite; /* 滚动动画 */
}
@keyframes scroll {
from {
transform: translateX(0);
} }
to {
transform: translateX(-100%);
}
}
.query-form-item {
margin-right: 5px;
margin-bottom: 6px;
}
#inputer {
width: 100%;
min-height: 30px;
background-color: white;
border: #d0d0d0;
border-style: solid;
border-width: 0.1px;
color: #4a4a4a;
}
#inputer:focus {
width: 100%;
min-height: 30px;
background-color: white;
border: #0080ff;
border-style: solid;
border-width: 0.1px;
color: #4a4a4a;
}
.ime-disabled {
ime-mode: disabled;
}
.result-display {
border: 2px solid #ccc; /* 默认外框颜色 */
border-radius: 10px;
margin-top: 5px;
margin-left: 15px;
margin-right: 25px;
padding-left: 25px;
/* 不设置背景颜色 */
}
.result-success {
border-color: #4CAF50; /* 成功时外框颜色 */
}
.result-failure {
border-color: #0080ff; /* 失败时外框颜色 */
}
.result-text {
height: 18px;
/* 你可以在这里设置默认的文本颜色或其他样式 */
}
.result-text-success {
color: #4CAF50; /* 成功时文本颜色 */
font-size: 14px;
}
.result-text-failure {
color: #0080ff; /* 失败时文本颜色 */
font-size: 14px;
}
</style> </style>

Loading…
Cancel
Save