You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

513 lines
14 KiB

<!--零件切换模块信息管理页-->
<template>
<div class="cr-body-content">
<div ref="box">
<flexbox class="content-header">
<el-form :model="listQuery" ref="queryForm" v-show="showSearch" :inline="true">
<el-form-item label="源零件编码" prop="sourcePartCode" class="forimitem">
<el-input v-model="listQuery.sourcePartCode" placeholder="请输入源零件编码" clearable size="small" style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="源零件名称" prop="sourcePartName" class="forimitem">
<el-input v-model="listQuery.sourcePartName" placeholder="请输入源零件名称" clearable size="small" style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="目标零件编码" prop="targetPartCode" class="forimitem">
<el-input v-model="listQuery.targetPartCode" placeholder="请输入目标零件编码" clearable size="small" style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="目标零件名称" prop="targetPartName" class="forimitem">
<el-input v-model="listQuery.targetPartName" placeholder="请输入目标零件名称" clearable size="small" style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item class="formitem">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleFilter">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery('queryForm')">重置</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" style="margin-left: 15px" @click="handleDownload()">导出(Excel)
</el-button>
</el-form-item>
<el-form-item style="margin-bottom: 0px; ">
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-plus" @click="handleCreate">新增
</el-button>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-edit" @click="handleUpdate">修改
</el-button>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-delete" @click="handleDelete">删除
</el-button>
</el-form-item>
</el-form>
</flexbox>
</div>
<div class="l-table">
<!--表格渲染-->
<el-table ref="multipleTable" v-loading="listLoading" element-loading-text="拼命加载中..." element-loading-spinner="el-icon-loading"
class="cr-table" :data="tableData" :height="tableHeight" :cell-style="cellStyle" :header-cell-style="headerRowStyle"
size="small" stripe border highlight-current-row style="width: 100%" @sort-change="sortChange" @selection-change="handleSelectionChange"
@row-click="handleRowClick">
<el-table-column type="selection" width="44px"></el-table-column>
<el-table-column v-for="(item, index) in getDefaultField" :key="index" :prop="item.prop" :label="item.label"
:min-width="item.width" :formatter="fieldFormatter" sortable="custom" show-overflow-tooltip :gutter="0">
<template slot="header" slot-scope="scope">
{{ scope.column.label }}
</template>
</el-table-column>
</el-table>
<!--表单渲染-->
<el-dialog :visible.sync="dialogFormVisible" :close-on-click-modal="false" :title="formTitle" width="700px" @close="closeDialog">
<el-form ref="form" :inline="true" :model="childFormModel" :rules="rules" size="small" label-width="120px">
<el-row>
<el-col :span="4">
<el-form-item label="源零件编码:" required />
</el-col>
<el-col :span="20">
<el-form-item prop="sourcePartCode">
<el-input style="width: 400px" v-model="childFormModel.sourcePartCode" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-form-item label="目标零件编码:" required />
</el-col>
<el-col :span="20">
<el-form-item prop="targetPartCode">
<el-input style="width: 400px" v-model="childFormModel.targetPartCode" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<!--表格渲染-->
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="dialogFormVisible = false">取消</el-button>
<el-button v-loading="formLoading" type="primary" @click="save()">确认</el-button>
</div>
</el-dialog>
</div>
<div class="table-footer">
<!-- 分页控件 -->
<pagination v-show="totalCount > 0" :total="totalCount" :page.sync="pageIndex" :limit.sync="listQuery.maxResultCount"
@pagination="getList" />
</div>
</div>
</template>
<script>
import Pagination from "@/components/Pagination";
import permission from "@/directive/permission/index.js";
import CRMTableHead from "../../components/CRMTableHead";
import importExcel from "@/components/ImportTxt";
import Lockr from "lockr";
import moment from "moment";
//import Detail from "./detail.vue";
import {
downloadFile
} from "@/utils/crmindex.js";
export default {
name: "PartSwitch",
components: {
Pagination,
CRMTableHead,
importExcel,
//Detail
},
directives: {
permission
},
// filters: {
// IsCustomerSignFilter(status) {
// //翻译是否签字
// const statusMap = {
// true: "",
// false: "",
// };
// return statusMap[status];
// },
// },
data() {
return {
rules: {
sourcePartCode: [{
required: true,
message: "必须输入",
trigger: "blur"
}],
targetPartCode: [{
required: true,
message: "必须输入",
trigger: "blur"
}],
},
tableData: null,
totalCount: 0,
listLoading: true,
listQuery: {
sourcePartCode: undefined,
sourcePartName: undefined,
targetPartCode: undefined,
targetPartName: undefined,
maxResultCount: 15,
skipCount: 0
},
childFormModel: {
},
//当前页索引
pageIndex: 1,
// 显示搜索条件
showSearch: true,
multipleSelection: [],
dialogFormVisible: false,
formTitle: "",
isEdit: false,
formLoading: false,
tableHeight: document.documentElement.clientHeight - 280,
};
},
mounted() {
this.$nextTick(() => {
var offsetHei = document.documentElement.clientHeight;
//console.log(offsetHei);
let boxH = this.$refs.box.offsetHeight;
this.tableHeight = offsetHei - boxH - 57 - 79; //57为footer高度,79为页面上部标签高度
});
},
created() {
debugger
this.getList();
},
computed: {
getDefaultField() {
var tempsTabs = [];
tempsTabs.push({
label: "源零件编码",
prop: "sourcePartCode",
width: 150,
});
tempsTabs.push({
label: "源零件名称",
prop: "sourcePartName",
width: 200,
});
tempsTabs.push({
label: "目标零件编码",
prop: "targetPartCode",
width: 150,
});
tempsTabs.push({
label: "目标零件名称",
prop: "targetPartName",
width: 200,
});
tempsTabs.push({
label: "创建时间",
prop: "creationTime",
width: 180,
});
console.log("字段列表" + JSON.stringify(tempsTabs));
return tempsTabs;
},
},
methods: {
/**
* 子窗口保存按钮事件
*/
save() {
let _this = this;
this.$refs.form.validate((valid) => {
if (valid) {
console.log("保存参数:" + JSON.stringify(_this.childFormModel));
_this.formLoading = true;
if (_this.isEdit) {
//修改
_this.$axios
.puts("/api/newjit/part-switch/" + _this.childFormModel.id, _this.childFormModel)
.then((response) => {
_this.formLoading = false;
_this.$notify({
title: "成功",
message: "更新成功",
type: "success",
duration: 2000,
});
_this.dialogFormVisible = false;
_this.getList();
})
.catch(() => {
_this.formLoading = false;
});
} else {
//insert添加
console.log(JSON.stringify(_this.childFormModel));
_this.$axios
.posts("/api/newjit/part-switch", _this.childFormModel)
.then((response) => {
_this.formLoading = false;
_this.$notify({
title: "成功",
message: "新增成功",
type: "success",
duration: 2000,
});
_this.dialogFormVisible = false;
_this.getList();
})
.catch(() => {
_this.formLoading = false;
});
}
}
});
},
/** 新增 */
handleCreate() {
if (this.$refs["form"] !== undefined) {
this.$nextTick(() => {
this.$refs["form"].resetFields();
});
}
this.formTitle = "新增";
this.isEdit = false;
this.childFormModel = {};
this.dialogFormVisible = true;
},
/** 修改 */
handleUpdate(row) {
this.formTitle = "修改";
this.isEdit = true;
if (this.multipleSelection.length != 1) {
this.$message({
message: "编辑必须选择单行",
type: "warning",
});
return;
} else {
this.fetchData(this.multipleSelection[0].id);
this.dialogFormVisible = true;
}
},
/** 删除 */
handleDelete(row) {
if (this.multipleSelection.length != 1) {
this.$message({
message: "编辑必须选择单行",
type: "warning",
});
return;
}
this.$confirm(
"是否删除记录" + this.multipleSelection[0].sourcePartCode + "?",
"提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
this.$axios
.deletes(
"/api/newjit/part-switch/" + this.multipleSelection[0].id
)
.then((response) => {
this.$notify({
title: "成功",
message: "删除成功",
type: "success",
duration: 2000,
});
this.getList();
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
fetchData(id) {
//循环动态
this.$axios
.gets("/api/newjit/part-switch/" + id)
.then((response) => {
this.childFormModel = response.item;
});
},
/** 导出功能 */
handleDownload() {
this.listLoading = true;
console.log(JSON.stringify(this.listQuery));
this.$axios
.posts("/api/newjit/part-switch/export", this.listQuery)
.then((res) => {
let filename = res.item;
this.$axios
.BolbGets("/api/newjit/exclude-part-cfg/download/" + filename)
.then((response) => {
if (filename.indexOf("_") != -1) {
let downName =
filename.slice(0, filename.lastIndexOf("_")) +
filename.slice(filename.lastIndexOf("."));
downloadFile(response, downName);
this.$notify({
title: "成功",
message: "数据-导出成功!",
type: "success",
duration: 2000,
});
} else {
downloadFile(response, filename);
this.$notify({
title: "成功",
message: "数据-导出成功!",
type: "success",
duration: 2000,
});
}
this.listLoading = false;
});
});
this.listLoading = false;
},
/** 重置按钮操作 */
resetQuery(refName) {
this.$refs[refName].resetFields();
this.handleQuery();
this.listQuery.TargetPartName = [];
},
/** 搜索按钮操作 */
handleQuery() {
this.listQuery.skipCount = 0;
this.getList();
},
/** 格式化字段 */
fieldFormatter(row, column) {
return row[column.property];
},
getList() {
let _this = this;
this.listLoading = true;
console.log("getList方法参数:" + JSON.stringify(this.listQuery));
this.listQuery.skipCount = (this.pageIndex - 1) * this.listQuery.maxResultCount;
this.$axios
.gets("/api/newjit/part-switch/list", this.listQuery)
.then((response) => {
_this.tableData = response.items;
console.log("getList方法结果:" + JSON.stringify(_this.tableData));
_this.totalCount = response.totalCount;
setTimeout(() => {
//大数据量加载时
_this.listLoading = false;
}, 500);
})
.catch(() => {
_this.listLoading = false;
});
},
handleFilter() {
this.pageIndex = 1;
this.getList();
},
sortChange(data) {
const {
prop,
order
} = data;
if (!prop || !order) {
this.handleFilter();
return;
}
this.listQuery.Sorting = prop + " " + order;
this.handleFilter();
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
/** 通过回调控制style */
cellStyle({
row,
column,
rowIndex,
columnIndex
}) {
if (column.property === "qty") {
return {
textAlign: "right"
};
} else {
return {
textAlign: "left"
};
}
},
/** 通过回调控制表头style */
headerRowStyle({
row,
column,
rowIndex,
columnIndex
}) {
if (column.property === "qty") {
return {
textAlign: "right",
background: "#FAFAFA"
};
} else {
return {
textAlign: "left",
background: "#FAFAFA"
};
}
},
handleRowClick(row, column, event) {
this.$refs.multipleTable.clearSelection();
this.$refs.multipleTable.toggleRowSelection(row);
},
closeDialog() {
//this.multipleSelection = [];//清空数据
},
},
};
</script>
<style lang="scss" scoped>
@import "../../../pg-fis/styles/crmtable.scss";
.divider1 {
margin: 0;
//width: 100%;
}
.formitem {
margin-bottom: 0;
}
</style>