kpi-web/scripts/ibase.js

674 lines
18 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var ibasecomponent = {
template:`
<div>
<div id="" style="display: flex">
<el-input v-model="p_name_v" placeholder="产品型号及名称" clearable style="width: 160px;" @change="input_change"></el-input>
<el-button id ="bt_search" plain type="primary" icon="el-icon-search" @click="get_ibase()">搜索</el-button>
<el-button plain type="primary" icon="el-icon-circle-plus-outline" @click="add()">新增</el-button>
<el-button id ="bt_del" plain type="primary" icon="el-icon-circle-plus-outline" @click="del_ibase()">删除</el-button>
<el-button id ="bt_del" plain type="primary" icon="el-icon-circle-plus-outline" @click="show_import_ibase()">点击上传(csv文件)</el-button>
<el-button id ="bt_export" plain type="primary" icon="el-icon-document" @click="export_ibase()">导出</el-button>
</div>
<div>
<el-progress v-if="if_show_process" :percentage="percent_len" ></el-progress>
</div>
<div class="span">
<el-table
:data="tableData"
style="width: 100%"
:height="tHeight"
:cell-style="{background:'#fff'}"
border
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
>
</el-table-column>
<el-table-column
prop="id"
label="序号"
width="60">
</el-table-column>
<el-table-column
prop="p_name_cn"
label="产品型号及名称(中)"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_name_en"
label="产品型号及名称(英)"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_ibase_cn"
label="检验依据(中)"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_ibase_en"
label="检验依据(英)"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_categories"
label="产品大类"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_sub"
label="产品小类"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
label="操作"
width="100">
<template slot-scope="scope">
<el-button @click="show_op(scope.row)" type="text" size="medium" >更新日志</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<span class="demonstration"></span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[50,100, 200, 300]"
:page-size="pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="recordTotal">
</el-pagination>
</div>
<el-dialog
title="检验依据"
:visible.sync="dialogVisible"
:lock-scroll ="false"
width="40%">
<el-form ref="userform" :model="form" label-width="160px" :rules="rules">
<el-form-item label="产品型号及名称(中)" prop="p_name_cn">
<el-input v-model="form.p_name_cn"></el-input>
</el-form-item>
<el-form-item label="产品型号及名称(英)" prop="p_name_en">
<el-input v-model="form.p_name_en" ></el-input>
</el-form-item>
<el-form-item label="检验依据(中)" prop="p_ibase_cn">
<el-input v-model="form.p_ibase_cn"></el-input>
</el-form-item>
<el-form-item label="检验依据(英)" prop="p_ibase_en">
<el-input v-model="form.p_ibase_en" ></el-input>
</el-form-item>
<el-form-item label="产品大类" prop="p_categories">
<el-input v-model="form.p_categories" ></el-input>
</el-form-item>
<el-form-item label="产品小类" prop="p_sub">
<el-input v-model="form.p_sub" ></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button id ="bt_ok" plain type="primary" @click="postibase()">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="产品检验依据导入"
:visible.sync="dialogVisible1"
:lock-scroll ="false"
width="70%">
<div style="display: flex;margin-top: 20px;">
<el-upload
class="upload-demo"
action=""
:on-change="handleChange"
:file-list="fileListUpload"
:show-file-list="false"
accept=".csv"
:auto-upload="false">
<el-button id ="bt_upload" size="small" plain type="primary">点击上传csv文件</el-button>
</el-upload>
<!--<el-button id ="bt_import" size="small" plain type="primary" @click="importData" style="margin-left: 10px;">确认导入</el-button>
<el-button id ="bt_download" size="small" plain type="primary" @click="download_template" style="margin-left: 10px;">下载导入模板文件</el-button>-->
</div>
<div>
<el-progress v-if="if_show_process1" :percentage="percent_len" ></el-progress>
</div>
<el-table
:data="importTableData"
style="font-size:13px;margin-top: 10px;width: 100%;"
:height="tHeight*0.5"
:cell-style="{background:'#fff'}"
stripe border>
<el-table-column
prop="p_name_cn"
label="产品型号及名称(中)"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_name_en"
label="产品型号及名称(英)"
width="160"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_ibase_cn"
label="检验依据(中)"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_ibase_en"
label="检验依据(英)"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_categories"
label="产品大类"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="p_sub"
label="产品小类"
width="100"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false">取 消</el-button>
<el-button id ="bt_ok" plain type="primary" @click="import_ibase()">确 定</el-button>
</span>
</el-dialog>
<el-drawer
title="日志"
:visible.sync="drawer"
:direction="direction"
:before-close="handleClose"
size="40%"
>
<el-table
:data="tableData1"
style="font-size:14px;margin-left: 20px;width: 90%;"
:cell-style="{background:'#fff'}"
border
>
<el-table-column
prop="op_time"
label="操作时间"
width="150">
</el-table-column>
<el-table-column
prop="op_user"
label="操作人"
width="80">
</el-table-column>
<el-table-column
prop="op_context"
label="记录内容"
width="200"
:show-overflow-tooltip="true">
</el-table-column>
</el-table>
</el-drawer>
</div>
`,
data(){
// 获取当前屏幕的分辨率
let screenW = window.screen.width;
let screenH = window.screen.height;
console.log("screen width:",screenW);
console.log("screen height:",screenH);
return {
tHeight:screenH*0.7,
tableData: [],
tableData1: [],
currentPage: 1,
pagesize:50,
recordTotal:0,
p_name_v:'',
dialogVisible:false,
oper_type:0,
multipleSelection: [],
importdialogVisible:false,
fileListUpload:[],
importTableData:[],
disabled:true,
if_show_process:false,
percent_len:0,
interval:'',
if_show_process1:false,
fileList:[],
form:{
id:0,
p_name_cn:'',
p_name_en:'',
p_ibase_cn:'',
p_ibase_en:'',
p_categories:'',
p_sub:'',
},
rules: {
p_name_cn: [
{ required: true, message: '产品型号及名称(中)不可为空', trigger: 'blur' }
],
p_name_en: [
{ required: true, message: '产品型号及名称(英)不可为空', trigger: 'blur' }
],
p_ibase_cn: [
{ required: true, message: '检验依据(中)不可为空', trigger: 'blur' }
],
p_ibase_en: [
{ required: true, message: '检验依据(英)不可为空', trigger: 'blur' }
],
},
dialogVisible1:false,
drawer:false,
direction: 'rtl',
}
},
mounted() {
this.get_ibase();
},
methods: {
show_op(row){
var _this = this;
axios.post('/pkpi/get_ibase_op_history', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_name:row.p_name_cn,
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
_this.$data.tableData1 = objs;
})
.catch(function (error) {
console.log(error);
});
this.drawer=true;
},
handleClose(done) {
done();
},
handleChange(file, fileList) {
document.getElementById("bt_upload").blur();
this.fileTemp = file.raw
console.log("filetype:",this.fileTemp);
if (this.fileTemp) {
console.log("begin ...")
console.log(this.fileTemp.type);
if ((this.fileTemp.type == 'text/csv') || (this.fileTemp.type == '.csv') || (this.fileTemp.type == 'application/vnd.ms-excel')) {
let _this = this//如果需要点击事件结束之后对DOM进行操作使用)_this.xx=xx进行操作
Papa.parse(_this.fileTemp, {
encoding:'gb2312',
complete (results) {
console.log(results)//这个是csv文件的数据
let data = []
//遍历csv文件中的数据存放到data中 方法不唯一,可自己更改
for (let i = 0; i < results.data.length; ++i) {
if(i==0){
continue;
}
let obj = {}
obj.p_name_cn = results.data[i][0]
if(obj.p_name_cn==""|| obj.p_name_cn==undefined){
continue;
}
obj.p_name_en = results.data[i][1]
if(obj.p_name_en==""|| obj.p_name_en==undefined){
continue;
}
obj.p_ibase_cn = results.data[i][2]
if(obj.p_ibase_cn==""|| obj.p_ibase_cn==undefined){
continue;
}
obj.p_ibase_en = results.data[i][3]
if(obj.p_ibase_en==""|| obj.p_ibase_en==undefined){
continue;
}
obj.p_categories = results.data[i][4]
obj.p_sub = results.data[i][5]
data.push(obj)
}
//data.splice(0, 1)//将数组第一位的表格名称去除
console.log('data', data)
_this.$data.importTableData=data;
}
})
} else {
this.$data.fileListUpload=[];
this.$message({
type: 'warning',
message: '附件格式错误,请删除后重新上传!'
})
}
} else {
this.$message({
type: 'warning',
message: '请上传附件!'
})
}
},
show_import_ibase(){
this.$data.importTableData=[];
this.$data.dialogVisible1=true;
},
import_ibase(){
document.getElementById("bt_ok").blur();
if(this.$data.importTableData.length==0){
this.$message({
message: "请选择导入文件",
type: "warning",
duration: 1500
});
return;
}
this.$confirm('是否确认导入?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var _this = this;
_this.$data.percent_len=0;
_this.$data.if_show_process1=true;
_this.$data.interval= setInterval(()=>{
if(_this.$data.percent_len>=99){
clearInterval(_this.$data.interval);
return;
}
if (_this.$data.percent_len<98){
_this.$data.percent_len+=2
}
},20)
axios.post('/pkpi/import_ibase', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:this.$data.importTableData,
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
let len = _this.$data.importTableData.length;
errType = "success"
s = "导入成功("+len+"条)";
_this.$data.percent_len=100;
_this.$data.if_show_process1=false;
} else if(r == 1) {
errType = "error"
s = "正在导入,请稍后!";
clearInterval(_this.$data.interval);
} else{
errType = "error"
s = "导入失败!";
clearInterval(_this.$data.interval);
}
console.log(s);
_this.$message({
message: s,
type: errType,
duration: 3000
});
_this.$data.dialogVisible1=false;
//更新页面
_this.get_ibase();
})
.catch(function (error) {
console.log(error);
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
return;
});
},
export_ibase(){
document.getElementById("bt_export").blur();
var _this = this;
var objs;
axios.post('/pkpi/export_ibase', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_name: _this.$data.p_name_v,
})
.then(function (response) {
var date = new Date();
//年 getFullYear():四位数字返回年份
var year = date.getFullYear()%2000; //getFullYear()代替getYear()
console.log(year.toString());
//月 getMonth()0 ~ 11
var month = date.getMonth() + 1;
if(month<10){
month='0'+month
}
//日 getDate()(1 ~ 31)
var day = date.getDate();
if(day<10){
day='0'+day;
}
//时 getHours()(0 ~ 23)
var hour = date.getHours();
if (hour<10){
hour='0'+hour;
}
//分 getMinutes() (0 ~ 59)
var minute = date.getMinutes();
if (minute<10){
minute='0'+minute;
}
//秒 getSeconds()(0 ~ 59)
var second = date.getSeconds();
if (second<10){
second='0'+second;
}
var filename=year.toString()+month.toString()+day.toString() +" " + hour.toString()+minute.toString()+second.toString();
filename = "检验依据 "+filename+".csv"
console.log(response.data);
var fileid = response.data.fileId;
var downUrl = 'file/'+fileid;
downloadUrl(filename,downUrl);
})
.catch(function (error) {
console.log(error);
});
},
input_change(value) {
console.log(value);
this.get_ibase();
},
postibase(){
this.$refs['userform'].validate((valid) => {
if(valid){
this.$data.dialogVisible = false;
var _this = this;
console.log(_this.$data.form);
var objs;
axios.post('/pkpi/postibase', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
data:_this.$data.form,
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
errType = "success"
} else{
errType = "error"
}
if (r ==0) {
s = "新增成功!";
} else{
s = "新增失败!";
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
//更新页面
_this.get_ibase();
})
.catch(function (error) {
console.log(error);
});
}
});
},
add(){
this.$data.form={
id:0,
p_name_cn:'',
p_name_en:'',
p_ibase_cn:'',
p_ibase_en:'',
}
this.$data.dialogVisible=true;
},
handleSelectionChange(val) {
console.log("已选择");
console.log(val);
this.multipleSelection = val;
},
del_ibase(){
var _this = this;
axios.post('/pkpi/del_ibase', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
ids: _this.$data.multipleSelection,
})
.then(function (response) {
let r = response.data.r;
let s = ""
let errType = ""
if (r == 0) {
s = "删除成功!";
errType = "success"
} else{
s = "删除失败!";
errType = "error"
}
_this.$message({
message: s,
type: errType,
duration: 1500
});
if (r ==0) {
_this.get_ibase();//更新页面
}
})
.catch(function (error) {
console.log(error);
});
},
get_ibase(cur_page){
document.getElementById("bt_search").blur();
if (cur_page==undefined){
this.$data.currentPage=1;
} else {
this.$data.currentPage=cur_page;
}
var _this = this;
var objs;
axios.post('/pkpi/get_ibase', {
opuser:localStorage.getItem("online_user"),
opuser_uuid:localStorage.getItem("uuid"),
p_name: _this.$data.p_name_v,
index: this.$data.currentPage,
count: this.$data.pagesize
})
.then(function (response) {
console.log(response.data);
objs = response.data.data;
rcnt = response.data.total;
_this.$data.tableData = objs;
_this.$data.recordTotal = rcnt;
})
.catch(function (error) {
console.log(error);
});
},
handleSizeChange(val) {
this.$data.pagesize = val;
this.get_ibase();
},
handleCurrentChange(val) {
this.$data.currentPage = val;
this.get_ibase();
}
}
}