fix:禅道465

This commit is contained in:
shijing 2026-07-27 11:33:08 +08:00
parent ff2e9a49e0
commit d438909046
1 changed files with 69 additions and 5 deletions

View File

@ -213,11 +213,20 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-col v-if="form.type == 'pur_in'&&project_code=='bxerp'&& cate == 'halfgood'"> <el-row v-if="form.type == 'pur_in'&&project_code=='bxerp'&& cate == 'halfgood'">
<el-col :md="12" :sm="24">
<el-form-item label="编号前缀"> <el-form-item label="编号前缀">
<el-input v-model="halfgoodprefix" @change="halfgoodprefixChange" placeholder="编号前缀"/> <el-input v-model="halfgoodprefix" @change="halfgoodprefixChange" placeholder="编号前缀"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24">
<el-form-item label-width="20px">
<input ref="numberImportInput" type="file" accept=".xls,.xlsx" style="display:none" @change="onImportNumberFile" />
<el-button type="primary" plain @click="triggerImportNumbers">导入编号</el-button>
<span style="margin-left: 8px; color: var(--el-text-color-secondary); font-size: 12px;">读取 Excel "板号"</span>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="mTracking==20&&form.count>0&&(form.type == 'pur_in'||form.type == 'other_in'||(form.type == 'sale_out'&&project_code=='bxerp'))"> <el-row v-if="mTracking==20&&form.count>0&&(form.type == 'pur_in'||form.type == 'other_in'||(form.type == 'sale_out'&&project_code=='bxerp'))">
<el-col :md="12" :sm="24" v-for="i in form.count" :key="i"> <el-col :md="12" :sm="24" v-for="i in form.count" :key="i">
<el-form-item :label="'编号'+i" required> <el-form-item :label="'编号'+i" required>
@ -285,6 +294,7 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import * as XLSX2 from "xlsx";
const defaultForm = { const defaultForm = {
state: 10, state: 10,
count: 1, count: 1,
@ -905,6 +915,60 @@ export default {
that.mioitems[i] = that.halfgoodprefix+that.mioitems[i]; that.mioitems[i] = that.halfgoodprefix+that.mioitems[i];
} }
}, },
triggerImportNumbers(){
let el = this.$refs.numberImportInput;
if(el){
el.value = "";
el.click();
}
},
onImportNumberFile(e){
let that = this;
let file = e.target.files && e.target.files[0];
if(!file) return;
let reader = new FileReader();
reader.onload = (ev) => {
try{
const data = new Uint8Array(ev.target.result);
const workbook = XLSX2.read(data, { type: "array" });
const sheet = workbook.Sheets[workbook.SheetNames[0]];
if(!sheet){
that.$message.error("Excel 中没有可读取的工作表");
return;
}
const rows = XLSX2.utils.sheet_to_json(sheet, { defval: "" });
let numbers = [];
rows.forEach(row => {
const isTotalRow = Object.values(row).some(v => String(v).trim() === "合计");
if(isTotalRow) return;
for(const key of Object.keys(row)){
if(String(key).trim() === "板号"){
const v = row[key];
if(v !== null && v !== undefined && String(v).trim() !== ""){
numbers.push(String(v).trim());
}
break;
}
}
});
if(numbers.length === 0){
that.$message.warning("未在 Excel 中找到\"板号\"列或该列为空");
return;
}
that.form.count = numbers.length;
that.mioitems = numbers.slice();
that.mioitemw = numbers.map(n => ({ number: n }));
that.$message.success(`已导入 ${numbers.length} 个编号`);
}catch(err){
console.log(err);
that.$message.error("解析 Excel 失败");
}
};
reader.onerror = () => {
that.$message.error("读取文件失败");
};
reader.readAsArrayBuffer(file);
},
validateInput(i){ validateInput(i){
this.mioitems[i] = this.mioitems[i].replace(/\D/g, ''); this.mioitems[i] = this.mioitems[i].replace(/\D/g, '');
}, },