From ae4077644fc36dee9b66c85b23321b8e170361d0 Mon Sep 17 00:00:00 2001
From: lzhe <181968431@qq.com>
Date: 星期二, 21 五月 2024 23:48:10 +0800
Subject: [PATCH] 1
---
src/views/console/bom-list/index.vue | 94 +++++++++++++
src/views/console/basic-data/addProduct.vue | 94 ++++++++-----
src/views/console/basic-data/product.vue | 180 +++++++++++++++++++------
3 files changed, 284 insertions(+), 84 deletions(-)
diff --git a/src/views/console/basic-data/addProduct.vue b/src/views/console/basic-data/addProduct.vue
index 7517873..be471ae 100644
--- a/src/views/console/basic-data/addProduct.vue
+++ b/src/views/console/basic-data/addProduct.vue
@@ -5,42 +5,59 @@
<el-row>
<el-col :span="8">
<el-form-item label="涓婄骇浜у搧">
- <el-input v-model="addDictForm.code" placeholder="涓婄骇浜у搧" clearable></el-input>
+ <el-tree-select
+ @change = "parentIdChange"
+ default-expand-all
+ v-model="addDictForm.parentId"
+ clearable
+ node-key="id"
+ placeholder="涓婄骇浜у搧"
+ ref="parentTree"
+ :data="parentData"
+ check-strictly
+ :props="{ label: 'name' }"
+ style="width:100%;"
+ :render-after-expand="false" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="浜у搧缂栧彿">
- <el-input v-model="addDictForm.dictValue" placeholder="浜у搧缂栧彿" clearable></el-input>
+ <el-input v-model="addDictForm.code" placeholder="淇濆瓨鏃剁郴缁熻嚜鍔ㄧ敓鎴�" disabled clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
- <el-form-item label="浜у搧鍚嶇О" prop="sort">
- <el-input v-model="addDictForm.sort" placeholder="浜у搧鍚嶇О" clearable></el-input>
+ <el-form-item label="浜у搧鍚嶇О" prop="name">
+ <el-input v-model="addDictForm.name" placeholder="浜у搧鍚嶇О" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
- <el-form-item label="浜у搧绫诲瀷" prop="sort">
- <el-input v-model="addDictForm.sort" placeholder="浜у搧绫诲瀷" clearable></el-input>
+ <el-form-item label="浜у搧绫诲瀷" prop="typeId">
+ <el-select v-model="addDictForm.typeId" placeholder="璇烽�夋嫨" style="width: 100%;">
+ <el-option v-for="item in typeIdList" :key="item.id" :label="item.name" :value="item.id" />
+ </el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="璁¢噺鍗曚綅">
- <el-input v-model="addDictForm.sort" placeholder="璁¢噺鍗曚綅" clearable></el-input>
+ <el-input v-model="addDictForm.unit" placeholder="璁¢噺鍗曚綅" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="瑙勬牸鍨嬪彿">
- <el-input v-model="addDictForm.sort" placeholder="瑙勬牸鍨嬪彿" clearable></el-input>
+ <el-input v-model="addDictForm.standardModel" placeholder="瑙勬牸鍨嬪彿" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="浜у搧鎻忚堪">
- <el-input v-model="addDictForm.remark" placeholder="瀛楀吀澶囨敞" clearable></el-input>
+ <el-input v-model="addDictForm.description" placeholder="瀛楀吀澶囨敞" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="鍚敤鐘舵��">
- <el-input v-model="addDictForm.sort" placeholder="鍚敤鐘舵��" clearable></el-input>
+ <el-select v-model="addDictForm.status" :prefix-icon="Search" placeholder="璇烽�夋嫨" style="width: 100%;padding-right: 20px;">
+ <el-option key="0" label="鍋滅敤" value="0" />
+ <el-option key="1" label="鍚敤" value="1" />
+ </el-select>
</el-form-item>
</el-col>
</el-row>
@@ -48,7 +65,7 @@
<div class="plan-content-title">鎵╁睍瀛楁</div>
<template #footer>
<el-button @click="visible=false" >鍙� 娑�</el-button>
- <el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="dictSubmit()">淇� 瀛�</el-button>
+ <el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="productSubmit">淇� 瀛�</el-button>
</template>
</el-dialog>
</template>
@@ -58,6 +75,8 @@
emits: ['success', 'closed'],
data() {
return {
+ parentData: {},
+ typeIdList: [],
value1: true,
mode: "add",
titleMap: {
@@ -69,19 +88,19 @@
isSaveing: false,
//琛ㄥ崟鏁版嵁
addDictForm: {
+ parentId: "",
code: "",
- dictValue: "",
- sort: "",
- isSealed: false,
- remark: "",
- dictKey: "-1",
- $isSealed: "鍚�"
+ name: "",
+ typeId: "",
+ unit: "",
+ standardModel: "",
+ description: "",
+ status: "1"
},
//楠岃瘉瑙勫垯
addDictRules: {
- code:[{required: true, message: '璇疯緭鍏ュ瓧鍏哥紪鍙�'}],
- dictValue:[{required: true, message: '璇疯緭鍏ュ瓧鍏稿悕绉�'}],
- sort:[{required: true, message: '璇疯緭鍏ュ瓧鍏告帓搴�'}]
+ name:[{required: true, message: '璇疯緭鍏ヤ骇鍝佸悕绉�'}],
+ typeId:[{required: true, message: '璇烽�夋嫨浜у搧绫诲瀷',trigger: 'change'}]
},
//鎵�闇�鏁版嵁閫夐」
groups: [],
@@ -102,9 +121,21 @@
// this.getDept()
},
methods: {
+ showParentData() {
+ this.$HTTP.get("/api/blade-cps/product/tree?status=1").then(res=> {
+ if(res.code == 200) {
+ this.parentData = res.data;
+ }
+ })
+ },
+ parentIdChange(val) {
+
+ },
//鏄剧ず
- open(mode='add'){
+ open(typeIdList,mode='add'){
+ this.showParentData(); //tree-select
this.mode = mode;
+ this.typeIdList = typeIdList;
this.visible = true;
return this
},
@@ -118,20 +149,11 @@
this.depts = res.data;
},
//琛ㄥ崟鎻愪氦鏂规硶
- dictSubmit(){
+ productSubmit(){
var obj = Object.assign({},this.addDictForm);
- if(obj.isSealed === true) {
- obj.$isSealed = "鏄�";
- obj.isSealed = "1";
- }else {
- obj.$isSealed = "鍚�";
- obj.isSealed = "0";
- }
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
- this.isSaveing = true;
- this.$HTTP.post("/api/blade-system/dict/submit",obj).then(res=> {
- this.isSaveing = false;
+ this.$HTTP.post("/api/blade-cps/product/insert",obj).then(res=> {
if(res.code == 200) {
this.$emit('success', this.addDictForm, this.mode);
this.visible = false;
@@ -149,12 +171,10 @@
setData(data){
console.log(data)
//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
- if(data.isSealed == "1") {
- data.isSealed = true;
- }else {
- data.isSealed = false;
- }
Object.assign(this.addDictForm, data);
+ if(data.parentId == 0) {
+ this.addDictForm.parentId = "";
+ }
}
}
}
diff --git a/src/views/console/basic-data/product.vue b/src/views/console/basic-data/product.vue
index e816c93..86bbbb8 100644
--- a/src/views/console/basic-data/product.vue
+++ b/src/views/console/basic-data/product.vue
@@ -47,6 +47,44 @@
<el-icon @click="addDrawer" class="searchi-icon"><Setting /></el-icon>
</el-col>
</el-row>
+ <div class="product-type-table">
+ <el-table ref="multipleTableRef0" :data="productTableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange0" row-key="id" lazy :load="tableLoad" :tree-props="{ hasChildren: 'hasChild' }">
+ <el-table-column type="selection" width="55" />
+ <el-table-column prop="name" label="浜у搧鍚嶇О"></el-table-column>
+ <el-table-column prop="code" label="浜у搧缂栧彿"></el-table-column>
+ <el-table-column prop="typeName" label="浜у搧绫诲瀷"></el-table-column>
+ <el-table-column prop="unit" label="璁¢噺鍗曚綅"></el-table-column>
+ <el-table-column prop="standardModel" label="瑙勬牸鍨嬪彿"></el-table-column>
+ <el-table-column prop="description" label="浜у搧鎻忚堪"></el-table-column>
+ <el-table-column prop="remark" label="宸ヨ壓璺嚎">
+ <template #default="scope">
+ <span class="viewDetial">鏌ョ湅璇︽儏</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" label="BOM娓呭崟">
+ <template #default="scope">
+ <span class="viewDetial">鏌ョ湅璇︽儏</span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="200px">
+ <template #default="scope">
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+ <el-button text type="primary" size="small" @click="refresh_product_type(scope.row, scope.$index)">鍒锋柊</el-button>
+ <el-button text type="primary" size="small" @click="del_product_type(scope.row, scope.$index,0)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-pagination
+ style="margin-top: 12px;"
+ @size-change="handleSizeChange0"
+ @current-change="handleCurrentChange0"
+ :current-page="currentPage4"
+ :page-sizes="[15, 50, 100]"
+ :page-size="15"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total0">
+ </el-pagination>
+ </div>
<el-drawer title="鏌ヨ璁剧疆" v-model="drawer" :direction="direction" :before-close="handleClose" size="780" class="drawerClass">
<div class="drawer-form">
<div class="drawer-left">
@@ -92,7 +130,7 @@
</el-col>
</el-row>
<div class="product-type-table">
- <el-table ref="multipleTableRef" :data="productTypeTableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
+ <el-table ref="multipleTableRef1" :data="productTypeTableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange1">
<el-table-column type="selection" width="55" />
<el-table-column prop="name" label="浜у搧绫诲瀷鍚嶇О"></el-table-column>
<el-table-column prop="remark" label="鎻忚堪"></el-table-column>
@@ -103,14 +141,14 @@
</el-table-column>
<el-table-column fixed="right" label="鎿嶄綔">
<template #default="scope">
- <el-button text type="primary" size="small" @click="del_product_type(scope.row, scope.$index)">鍒犻櫎</el-button>
+ <el-button text type="primary" size="small" @click="del_product_type(scope.row, scope.$index,1)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 12px;"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
+ @size-change="handleSizeChange1"
+ @current-change="handleCurrentChange1"
:current-page="currentPage4"
:page-sizes="[15, 50, 100]"
:page-size="15"
@@ -150,6 +188,8 @@
name: "allocation",
data(){
return {
+ total0: 0,
+ productTableData: [],
checkData: [],
checkList: [],
id: "",
@@ -167,7 +207,8 @@
uploadUrl: "/api/blade-cps/employee/import-employee",
exportUrl: "/api/blade-cps/employee/export-template",
activeName: 'first',
- selection: [],
+ selection0: [],
+ selection1: [],
total: 0,
searchData: {
keyWord: "",
@@ -180,14 +221,15 @@
dialog: {
save: false
},
- tableData: []
+ tableData: [],
+ delTypeNum: ""
}
},
created(){
},
mounted(){
- //this.searchBtn();
+ this.searchBtn0();
this.getProductType();
this.getProductTypeSelect();
this.getFields(); //鏌ヨ璁剧疆
@@ -196,6 +238,14 @@
...ElementPlusIconsVue,saveDialog,importTable
},
methods: {
+ tableLoad(row,treeNode,resolve) {
+ this.searchData.parentId= row.id;
+ this.$HTTP.post(`/api/blade-cps/product/lazy/tree?current=1&size=-1&id=${row.id}`).then(res=> {
+ if(res.code == 200) {
+ resolve(res.data.records);
+ }
+ })
+ },
delIcon(index) {
this.checkData.splice(index,1);
},
@@ -210,8 +260,15 @@
})
},
delTypeDataSingle(type) {
+ if(this.delTypeNum == 0) { //鍒犻櫎浜у搧
+ var url = "/api/blade-cps/product/remove";
+ var stopUrl = "/api/blade-cps/product/change-status";
+ }else if(this.delTypeNum == 1) { //鍒犻櫎浜у搧绫诲瀷
+ var url = "/api/blade-cps/product-type/remove";
+ var stopUrl = "/api/blade-cps/product-type/change-status";
+ }
if(type == 0) { //鍒犻櫎
- this.$HTTP.delete(`/api/blade-cps/product-type/remove`,[this.id]).then(res=> {
+ this.$HTTP.delete(url,[this.id]).then(res=> {
if(res.code == 200) {
this.$message.success("鎿嶄綔鎴愬姛");
this.delTypeModel = false;
@@ -224,7 +281,7 @@
ids: [this.id],
status: 0
}
- this.$HTTP.put(`/api/blade-cps/product-type/change-status`,obj).then(res=> {
+ this.$HTTP.put(stopUrl ,obj).then(res=> {
if(res.code == 200) {
this.$message.success("鎿嶄綔鎴愬姛");
this.delTypeModel = false;
@@ -261,7 +318,8 @@
}
})
},
- del_product_type(row) {
+ del_product_type(row,index,type) {
+ this.delTypeNum = tyype;
this.id = row.id;
this.delTypeModel = true;
},
@@ -302,7 +360,7 @@
done();
},
getExport() {
- this.$HTTP.get(`/api/blade-cps/employee/export-employee?` + this.$TOOL.qsStringify(this.searchData)).then(res => {
+ this.$HTTP.post(`/api/blade-cps/product/export-product`,this.searchData).then(res => {
if (res.code == 200) {
window.open(res.data.link);
}
@@ -322,23 +380,28 @@
},
searchClearBtn() {
this.searchData = {
- code: "",
- ProductValue: "",
+ keyWord: "",
+ standardModel: "",
+ status: "1",
+ typeId: [],
current: "1",
size: "15"
}
- this.searchBtn();
+ this.searchBtn0();
+ },
+ refresh_product_type() {
+ this.searchClearBtn();
},
searchclick() {
this.searchData.current = "1";
this.searchData.size = "15";
- this.searchBtn();
+ this.searchBtn0();
},
- searchBtn() {
- this.$HTTP.get("/api/blade-system/Product/parent-list",this.searchData).then(res=> {
+ searchBtn0() {
+ this.$HTTP.post("/api/blade-cps/product/lazy/tree?current=1&size=15&id=0",this.searchData).then(res=> {
if(res.code == 200) {
- this.tableData = res.data.records;
- this.total = res.data.total;
+ this.productTableData = res.data.records;
+ this.total0 = res.data.total;
}
})
},
@@ -358,7 +421,7 @@
this.$HTTP.post("/api/blade-system/Product/remove?ids="+row.id).then(res=> {
if(res.code == 200) {
that.$message.success("鎿嶄綔鎴愬姛");
- that.searchBtn();
+ that.searchBtn1();
}
})
}).catch(() => {
@@ -369,16 +432,16 @@
addData(){
this.dialog.save = true
this.$nextTick(() => {
- this.$refs.saveDialog.open()
+ this.$refs.saveDialog.open(this.typeIdList)
})
},
table_edit(row){
this.dialog.save = true
- this.$HTTP.get("/api/blade-system/Product/detail?id="+row.id).then(res=> {
+ this.$HTTP.get(`/api/blade-cps/product/get/${row.id}`).then(res=> {
if(res.code == 200) {
this.dialog.save = true;
this.$nextTick(() => {
- this.$refs.saveDialog.open('edit').setData(res.data);
+ this.$refs.saveDialog.open(this.typeIdList,'edit').setData(res.data);
})
}
})
@@ -390,46 +453,66 @@
this.$refs.saveDialog.open('show').setData(row)
})
},
- handleSelectionChange(selection) {
- this.selection = selection;
+ handleSelectionChange0(selection) {
+ this.selection0 = selection;
+ },
+ handleSelectionChange1(selection) {
+ this.selection1 = selection;
},
addTypeData() {
this.isAddType = true;
},
delTypeData() {
-
- },
- delData() {
- if(this.selection.length == 0) {
+ if(this.selection1.length == 0) {
this.$message({
message: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�',
type: 'warning'
});
return;
}
- var selStr = "";
- this.selection.map(item=> {
- selStr += item.id + ","
- })
- selStr = selStr.replace(/,$/, '');
- var that = this;
- this.$HTTP.post("/api/blade-system/Product/remove?ids="+selStr).then(res=> {
- if(res.code == 200) {
- that.$message.success("鎿嶄綔鎴愬姛");
- that.searchclick();
- }
- })
},
- handleSizeChange(val) {
+ delData() {
+ if(this.selection0.length == 0) {
+ this.$message({
+ message: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�',
+ type: 'warning'
+ });
+ return;
+ }
+ // var selStr = "";
+ // this.selection1.map(item=> {
+ // selStr += item.id + ","
+ // })
+ // selStr = selStr.replace(/,$/, '');
+ // var that = this;
+ // this.$HTTP.post("/api/blade-system/Product/remove?ids="+selStr).then(res=> {
+ // if(res.code == 200) {
+ // that.$message.success("鎿嶄綔鎴愬姛");
+ // that.searchclick();
+ // }
+ // })
+ },
+ handleSizeChange0(val) {
console.log(`姣忛〉 ${val} 鏉);
this.searchData.current = "1";
this.searchData.size = val;
- this.searchBtn();
+ this.searchBtn0();
},
- handleCurrentChange(val) {
+ handleCurrentChange0(val) {
console.log(`褰撳墠椤�: ${val}`);
this.searchData.current = val;
- this.searchBtn();
+ this.searchBtn0();
+ },
+ handleSizeChange1(val) {
+ console.log(`姣忛〉 ${val} 鏉);
+ this.searchData.current = "1";
+ this.searchData.size = val;
+ this.searchBtn1();
+ },
+ handleCurrentChange1(val) {
+ console.log(`褰撳墠椤�: ${val}`);
+ this.searchData.current = val;
+ this.searchBtn1();
}
}
}
@@ -446,7 +529,7 @@
padding-right: 8px;
margin-bottom: 8px;
}
- .multipleTableRef {
+ .multipleTableRef1,.multipleTableRef0 {
margin-bottom: 8px;
}
.search-condition {
@@ -498,7 +581,6 @@
.delBtn:nth-child(1) {
margin-right: 4px;
}
-
.delBtn:hover {
background-color: #f34d5b;
border-color: #f34d5b;
@@ -546,4 +628,8 @@
display: inline-block;
min-width: 80px;
}
+ .viewDetial {
+ color: #337ecc;
+ cursor: pointer;
+ }
</style>
diff --git a/src/views/console/bom-list/index.vue b/src/views/console/bom-list/index.vue
new file mode 100644
index 0000000..31029aa
--- /dev/null
+++ b/src/views/console/bom-list/index.vue
@@ -0,0 +1,94 @@
+<template>
+ <div class="rolePage">
+ <div class="roleContainer">
+ <div class="roleContainer-title">浜у搧鍒楄〃</div>
+ <el-input v-model="keyword" prefix-icon="el-icon-search" placeholder="杈撳叆鎼滅储鍐呭" clearable @keyup.enter="searchBtn"></el-input>
+ <ul>
+ <li v-for="(item,index) in leftData" @click="changeTabaleLi(item,index)">
+ <span :class="{active: item.active}">{{item.roleName}}</span>
+ </li>
+ </ul>
+ </div>
+ <div class="role-main-tabs">
+ <div class="role-main-header">
+ <div class="roleContainer-title">BOM娓呭崟</div>
+ <div>
+ <div>BOM鐗堟湰</div>
+ <div>
+ <span>浜у搧鍚嶇О</span>
+ <span>浜у搧缂栧彿</span>
+ </div>
+ <div>
+ <span>鏈畾鐗�</span>
+ <span>宸插畾鐗�</span>
+ </div>
+ <div>
+ 娣诲姞鏂扮増鏈�
+ </div>
+ </div>
+ </div>
+ <el-tabs tab-position="top">
+ <div>
+ <div>BOM娓呭崟鍒楄〃</div>
+ </div>
+ <div>
+ <ul>
+ <li>鐗╂枡缂栧彿</li>
+ <li>鐗╂枡鍚嶇О</li>
+ <li>瑙勬牸</li>
+ <li>璁¢噺鍗曚綅</li>
+ <li>鐗╂枡绫诲瀷</li>
+ <li>鐗╂枡灞炴��</li>
+ <li>鏄惁蹇呮</li>
+ <li>棰濆畾搴撳瓨</li>
+ <li>瀹夊叏搴撳瓨</li>
+ </ul>
+ <el-table ref="multipleTableRef0" :data="tableData" border style="width: 100%" class="multipleTableRef">
+ <el-table-column prop="name" label="宸ュ簭缂栧彿"></el-table-column>
+ <el-table-column prop="code" label="宸ュ簭鍚嶇О"></el-table-column>
+ <el-table-column prop="typeName" label="鐢ㄩ噺鍒嗗瓙"></el-table-column>
+ <el-table-column prop="unit" label="鐢ㄩ噺鍒嗘瘝"></el-table-column>
+ <el-table-column prop="standardModel" label="鍥哄畾鑰楁崯"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="200px">
+ <template #default="scope">
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">鍒锋柊</el-button>
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </el-tabs>
+ </div>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'BOM',
+ components: {
+
+ },
+ data() {
+ return {
+ leftData: [],
+ dialog: {
+ save: false,
+ permission: false
+ },
+ tableData: []
+ }
+ },
+ mounted(){
+
+ },
+ methods: {
+ searchBtn() {},
+
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
--
Gitblit v1.9.3