From d6a96aaac154f87523423d8e2e0c8300adab5d5e Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期二, 29 八月 2023 09:01:03 +0800
Subject: [PATCH] bug
---
.env.development | 2
src/views/basicData/index.vue | 49 +
src/views/standardLibrary/index.vue | 1306 +++++++++++++++++++++++++++-----------------------------
3 files changed, 672 insertions(+), 685 deletions(-)
diff --git a/.env.development b/.env.development
index d00c942..ab9be2d 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
ENV = 'development'
# base api
-VUE_APP_BASE_API = 'http://192.168.110.107:1234/'
+VUE_APP_BASE_API = 'http://localhost:1234/'
diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue
index 3ce4b75..efdd624 100644
--- a/src/views/basicData/index.vue
+++ b/src/views/basicData/index.vue
@@ -10,7 +10,7 @@
<span class="top_div_span">椤圭洰鍚嶇О锛�</span>
<el-input v-model="params.name" placeholder="璇疯緭鍏ラ」鐩悕绉�" style="width: 10%" size="small "></el-input>
<el-button type="primary" class="top_div_button" size="small" @click="selectProductModelTable">鏌ヨ</el-button>
- <el-button class="top_div_button" size="small" @click="params = {}">閲嶇疆</el-button>
+ <el-button class="top_div_button" size="small" @click="clean">閲嶇疆</el-button>
<div style="float: right">
<el-button class="top_div_button" type="primary" size="small" icon="el-icon-folder-add"
@click="centerDialogVisible = true">鏂板</el-button>
@@ -19,21 +19,22 @@
<el-form :model="form" :rules="rules" ref="ruleForm" class="addForm">
<el-form-item prop="material" required>
<span>鏍峰搧鍚嶇О锛�</span>
- <el-autocomplete class="inline-input" v-model="form.material" :fetch-suggestions="querySearch"
- placeholder="璇疯緭鍏ユ牱鍝佸悕绉�"></el-autocomplete>
+ <el-autocomplete class="inline-input" v-model="form.material" :fetch-suggestions="querySearch1"
+ placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" style="width: calc(100% - 70px);"></el-autocomplete>
</el-form-item>
<el-form-item>
<span>椤圭洰鍒嗙粍锛�</span>
- <el-input v-model="form.father" style="width: 85%" placeholder="璇疯緭鍏ユ牱鍝佸垎缁�"></el-input>
+ <el-autocomplete class="inline-input" v-model="form.father" :fetch-suggestions="querySearch2"
+ placeholder="璇疯緭鍏ユ牱鍝佸垎缁�" style="width: calc(100% - 70px);"></el-autocomplete>
</el-form-item>
<el-row :gutter="24">
<el-col :span="12"><el-form-item prop="name" required><span>椤圭洰鍚嶇О锛�</span>
- <el-input style="width: 70%" v-model="form.name"
+ <el-input style="width: calc(100% - 70px);" v-model="form.name"
placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input></el-form-item></el-col>
<el-col :span="12">
<el-form-item prop="unit">
<span v-html="'鍗� 浣嶏細'"></span>
- <el-input style="width: 70%" v-model="form.unit"
+ <el-input style="width: calc(100% - 70px);" v-model="form.unit"
placeholder="璇疯緭鍏ュ崟浣�"></el-input></el-form-item></el-col>
</el-row>
</el-form>
@@ -216,8 +217,8 @@
this.form.father = result.father;
this.form.unit = result.unit;
this.form.id = scope.row.id;
+ this.centerDialogVisible = true;
});
- this.centerDialogVisible = true;
},
selectDataList() {
this.tableData.forEach((a) => {
@@ -305,11 +306,41 @@
this.selectProductModelTable();
});
},
- querySearch(queryString, cb) {
- var restaurants = this.restaurants;
+ querySearch1(queryString, cb) {
+ var restaurants = []
+ this.productModelSelectmater.forEach(a => {
+ restaurants.push({
+ value: a
+ })
+ })
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
// 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
cb(results);
+ },
+ querySearch2(queryString, cb) {
+ var restaurants = []
+ this.projectGroupingOptions.forEach(a => {
+ restaurants.push({
+ value: a
+ })
+ })
+ var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
+ // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
+ cb(results);
+ },
+ createFilter(queryString) {
+ return (restaurant) => {
+ console.log(restaurant);
+ return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+ };
+ },
+ clean() {
+ this.params = {
+ material: this.params.material,
+ father: null,
+ name: null
+ }
+ this.selectProductModelTable()
}
},
mounted() {
diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue
index 5277b3b..8adee1f 100644
--- a/src/views/standardLibrary/index.vue
+++ b/src/views/standardLibrary/index.vue
@@ -1,685 +1,641 @@
<template>
- <div class="standard-library-main">
- <div class="content-main">
- <div class="library-bom" style="width: 300px">
- <el-input
- v-model="filterText"
- placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
- ></el-input>
- <el-button type="text">鍏ㄩ儴</el-button>
- <el-tree
- ref="tree"
- style="width: 100%"
- class="filter-tree"
- :data="standardTree"
- :props="defaultProps"
- node-key="id"
- highlight-current
- default-expand-all
- :filter-node-method="filterNode"
- :render-content="renderContent"
- @node-click="nodeClick"
- />
- </div>
- <div class="library-table" style="width: 80%">
- <div class="table-header">
- <div class="serve-btn">
- <span class="tipMsg">{{ msg !== "" ? msg : "" }}</span>
- <el-select
- v-model="versionValue"
- @change="changeSelect"
- placeholder="璇烽�夋嫨鐗堟湰鍙�"
- >
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- <el-button type="primary" @click="addVersionFun"
- >鏂板鐗堟湰鍙�</el-button
- >
- <el-button
- type="primary"
- icon="el-icon-plus"
- @click="addTreeFormVisible = true"
- >鏂板</el-button
- >
- <el-button
- class="top_div_button"
- icon="el-icon-delete-solid"
- style="color: #00a5ff"
- @click="deleteListClick"
- >鍒犻櫎</el-button
- >
- </div>
- </div>
- <div class="table-box">
- <el-table
- :data="tableData"
- style="width: 100%; margin-bottom: 20px"
- row-key="id"
- border
- height="calc(100vh - 250px)"
- default-expand-all
- ref="multipleTable"
- @select="selectTr"
- @select-all="selectAll"
- @selection-change="handleSelectionChange"
- :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
- >
- <el-table-column type="selection" label="搴忓彿"> </el-table-column>
- <el-table-column
- type="index"
- width="50px"
- label="搴忓彿"
- ></el-table-column>
- <el-table-column label="椤圭洰鍚嶇О" sortable>
- <template scope="scope">
- <el-tag
- ><div
- class="firstDiv"
- :style="`color: ${
+ <div class="standard-library-main">
+ <div class="content-main">
+ <div class="library-bom" style="width: 300px">
+ <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"></el-input>
+ <el-button type="text">鍏ㄩ儴</el-button>
+ <el-tree ref="tree" style="width: 100%" class="filter-tree" :data="standardTree" :props="defaultProps"
+ node-key="id" highlight-current default-expand-all :filter-node-method="filterNode"
+ :render-content="renderContent" @node-click="nodeClick" />
+ </div>
+ <div class="library-table" style="width: 80%">
+ <div class="table-header">
+ <div class="serve-btn">
+ <span class="tipMsg">{{ msg !== "" ? msg : "" }}</span>
+ <el-select v-model="versionValue" @change="changeSelect" placeholder="璇烽�夋嫨鐗堟湰鍙�">
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button type="primary" @click="addVersionFun">鏂板鐗堟湰鍙�</el-button>
+ <el-button type="primary" icon="el-icon-plus" @click="addTreeFormVisible = true">鏂板</el-button>
+ <el-button class="top_div_button" icon="el-icon-delete-solid" style="color: #00a5ff"
+ @click="deleteListClick">鍒犻櫎</el-button>
+ </div>
+ </div>
+ <div class="table-box">
+ <el-table :data="tableData" style="width: 100%; margin-bottom: 20px" row-key="id" border
+ height="calc(100vh - 250px)" default-expand-all ref="multipleTable" @select="selectTr"
+ @select-all="selectAll" @selection-change="handleSelectionChange"
+ :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+ <el-table-column type="selection" label="搴忓彿"> </el-table-column>
+ <el-table-column type="index" width="50px" label="搴忓彿"></el-table-column>
+ <el-table-column label="椤圭洰鍚嶇О" sortable>
+ <template scope="scope">
+ <el-tag>
+ <div class="firstDiv" :style="`color: ${
scope.row.code == '[1]' ? '#16a7ff' : '#58c173'
- }`"
- >
- {{ scope.row.code == "[1]" ? "01" : "02" }}
- </div>
- <span style="color: black">{{ scope.row.name }}</span></el-tag
- >
- </template>
- </el-table-column>
- <el-table-column
- prop="unit"
- label="鍗曚綅"
- sortable
- ></el-table-column>
- <el-table-column label="鏍囧噯鍊�" sortable>
- <template scope="scope">
- <el-input
- v-if="scope.row.edit === true || scope.row.code === '[2]'"
- @blur="requiredOnfocus(scope)"
- v-model="scope.row.required"
- placeholder="璇疯緭鍏ユ爣鍑嗗��"
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column prop="internal" label="鍐呮帶鍊�" sortable>
- <template scope="scope">
- <el-input
- v-if="scope.row.edit === true || scope.row.code === '[2]'"
- @blur="requiredOnfocus(scope)"
- v-model="scope.row.internal"
- placeholder="璇疯緭鍏ュ唴鎺у��"
- ></el-input>
- </template>
- </el-table-column>
- </el-table>
- <!-- 寮瑰嚭琛ㄥ崟椤� -->
- <div>
- <!-- -->
- </div>
- </div>
- </div>
- </div>
- <el-dialog
- class="addTree"
- title="娣诲姞鎸囨爣"
- width="28%"
- :visible.sync="addTreeFormVisible"
- @close="closeAddTreeForm"
- >
- <el-form v-model="addTreeForm" label-position="top">
- <el-form-item label="涓婄骇">
- <el-cascader
- v-model="addTreeForm.addTypeArr"
- :options="formTypeOptions"
- :props="{ ...defaultProps, checkStrictly: true }"
- clearable
- @change="changeCascader"
- />
- </el-form-item>
- <el-form-item
- v-show="addTreeForm.addTypeArr.length < 2"
- label="鐗╂枡鍚嶇О"
- >
- <el-input v-model="addTreeForm.materialName" />
- </el-form-item>
- <el-form-item
- v-show="addTreeForm.addTypeArr.length < 3"
- label="鎵ц鏍囧噯"
- >
- <el-input v-model="addTreeForm.standardName" />
- </el-form-item>
- <el-form-item
- v-show="addTreeForm.addTypeArr.length < 4"
- label="瑙勬牸鍨嬪彿"
- >
- <el-input v-model="addTreeForm.specificationsName" />
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="subAddTreeForm">纭� 瀹�</el-button>
- <el-button @click="addTreeFormVisible = false">鍙� 娑�</el-button>
- </div>
- </el-dialog>
- </div>
+ }`">
+ {{ scope.row.code == "[1]" ? "01" : "02" }}
+ </div>
+ <span style="color: black">{{ scope.row.name }}</span>
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="unit" label="鍗曚綅" sortable></el-table-column>
+ <el-table-column label="鏍囧噯鍊�" sortable>
+ <template scope="scope">
+ <el-input v-if="scope.row.edit === true || scope.row.code === '[2]'" @blur="requiredOnfocus(scope)"
+ v-model="scope.row.required" placeholder="璇疯緭鍏ユ爣鍑嗗��"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column prop="internal" label="鍐呮帶鍊�" sortable>
+ <template scope="scope">
+ <el-input v-if="scope.row.edit === true || scope.row.code === '[2]'" @blur="requiredOnfocus(scope)"
+ v-model="scope.row.internal" placeholder="璇疯緭鍏ュ唴鎺у��"></el-input>
+ </template>
+ </el-table-column>
+ </el-table>
+ <!-- 寮瑰嚭琛ㄥ崟椤� -->
+ <div>
+ <!-- -->
+ </div>
+ </div>
+ </div>
+ </div>
+ <el-dialog class="addTree" title="娣诲姞鏍囧噯鎸囨爣" width="28%" :visible.sync="addTreeFormVisible">
+ <el-form v-model="addTreeForm" label-position="top">
+ <el-form-item label="鏍囧噯绫诲瀷">
+ <el-cascader v-model="addTreeForm.addTypeArr" :options="formTypeOptions"
+ :props="{ ...defaultProps, checkStrictly: true }" clearable @change="changeCascader"/>
+ </el-form-item>
+ <el-form-item v-show="addTreeForm.addTypeArr.length < 2" label="鐗╂枡鍚嶇О">
+ <el-input v-model="addTreeForm.materialName" />
+ </el-form-item>
+ <el-form-item v-show="addTreeForm.addTypeArr.length < 3" label="鎵ц鏍囧噯">
+ <el-input v-model="addTreeForm.standardName" />
+ </el-form-item>
+ <el-form-item v-show="addTreeForm.addTypeArr.length < 4" label="瑙勬牸鍨嬪彿">
+ <el-input v-model="addTreeForm.specificationsName" />
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="subAddTreeForm">纭� 瀹�</el-button>
+ <el-button @click="addTreeFormVisible = false">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
</template>
<script>
-import {
- getMaterialList,
- getProductList,
- addMaterial,
- addStandards,
- addSpecifications,
- deleteListApi,
- blurUpdateApi,
- getVersion,
- addVersion,
-} from "@/api/standardLibrary";
+ import {
+ getMaterialList,
+ getProductList,
+ addMaterial,
+ addStandards,
+ addSpecifications,
+ deleteListApi,
+ blurUpdateApi,
+ getVersion,
+ addVersion,
+ } from "@/api/standardLibrary";
-import { selectproductModelApi } from "@/api/basicData/index";
-export default {
- data() {
- return {
- options: [],
- versionValue: "",
- deleteList: [],
- msg: "",
- isAllSelect: false,
- addTreeFormVisible: false,
- filterText: "",
- // 鏍囧噯搴揵om鏍�
- standardTree: [],
- // bom鐨�,榛樿閰嶇疆鍊�
- defaultProps: {
- children: "children",
- label: "name",
- value: "id",
- },
- tableData: [],
- oldtableData: [],
- tablespecifications: [],
- // 閫変腑鐨勮妭鐐规暟鎹�
- selectData: {},
- formTypeOptions: [],
- addTreeForm: {
- addTypeArr: [],
- },
- };
- },
- watch: {
- filterText(val) {
- this.$refs.tree.filter(val);
- },
- },
- created() {
- this.getStandardTree();
- },
- mounted() {},
- methods: {
- async initSelect() {
- this.options = [];
- this.versionValue = "";
- const response = await getVersion({
- specificationsId: this.selectData.id,
- });
- if (response.code === 200 && response.data.length > 0) {
- this.getTableByClick(this.selectData, response.data[0]);
- for (let i = 0; i < response.data.length; i++) {
- this.options.push({
- value: response.data[i],
- label: "V" + response.data[i],
- });
- this.versionValue = response.data[0];
- }
- }
- },
- changeSelect() {
- this.tableData = [];
- this.getTableByClick(this.selectData, this.versionValue);
- },
- async insertVersion() {
- const resp = await addVersion({ specificationsId: this.selectData.id });
- if (resp.code === 200) {
- this.initSelect();
- this.$message({
- type: "success",
- message: resp.message,
- });
- }
- },
- addVersionFun() {
- this.$confirm("纭娣诲姞鏂扮殑鐗堟湰鍙峰悧?", "鎻愮ず", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
- .then(() => {
- this.insertVersion();
- })
- .catch(() => {});
- },
- filterNode(value, data) {
- if (!value) return true;
- return data.name.indexOf(value) !== -1;
- },
- // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁
- async getStandardTree() {
- const { data } = await getMaterialList();
- this.standardTree = data.map((item) => {
- let name = null;
- switch (item.type) {
- case 0:
- name = "鍘熸潗鏂�";
- break;
- case 1:
- name = "鎴愬搧";
- break;
- }
- return {
- ...item,
- id: item.type,
- name,
- };
- });
- // formTypeOptions
- // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤�
- const treeOptions = JSON.parse(JSON.stringify(this.standardTree));
- this.getDefault(treeOptions, 0);
- this.formTypeOptions = treeOptions;
- this.$nextTick().then(() => {
- const firstNode = document.querySelector(
- ".el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node"
- );
- firstNode.click();
- });
- },
- getDefault(arr, index) {
- for (const item of arr) {
- if (item.children && item.children?.length > 0) {
- // 鏈夊瓙鑺傜偣
- this.getDefault(item.children, index + 1);
- if (index === 2) {
- item.children = null;
- }
- }
- }
- },
- // 鐐瑰嚮bom鏍戣妭鐐规柟娉�
- async nodeClick(data, node, element) {
- // 鏄瓙鑺傜偣
- if (node.level === 4) {
- this.getParentData(node.parent, node.data.name);
- // 瀛樹笅閫変腑鑺傜偣
- this.selectData = data;
- this.getTableByClick(data, this.versionValue);
- this.initSelect();
- }
- if (!("children" in data)) {
- return;
- }
- },
- // 鑾峰彇鏍戣矾寰�
- getParentData(node, name) {
- if (node !== null) {
- if (node.data.name !== undefined) {
- this.msg = node.data.name + " > " + name;
- }
- this.getParentData(node.parent, this.msg);
- }
- },
- async getTableByClick(data, versionVal) {
- await getProductList({
- specificationsId: data.id,
- version: versionVal,
- }).then((res) => {
- res.data.forEach((i) => {
- if (i.name === undefined) {
- i.name = i.children[0].name;
- i.unit = i.children[0].unit;
- i.id = i.children[0].id;
- i.required = i.children[0].required;
- i.internal = i.children[0].internal;
- i.edit = true;
- delete i.children;
- }
- });
- this.tableData = res.data;
- this.selectDataList();
- });
- },
- specificationDetails(row) {
- // 璺宠浆浜у搧瑙勬牸璇︽儏椤�
- this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`);
- },
- renderContent(h, { node, data, store }) {
- // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す
- const isFolder = "children" in data;
- console.log(`output->data`, isFolder);
- return (
- <span class="tree-node">
- {isFolder ? (
- <i
- class={
- node.expanded
- ? "el-icon-folder-opened blue-folder"
- : "el-icon-folder blue-folder"
- }
- ></i>
- ) : (
- <i class="el-icon-document blue-folder"></i>
- )}
- <div class="tree-lable">
- [{node.level}] {data.name}
- </div>
- </span>
- );
- },
- async subAddTreeForm() {
- this.addTreeFormVisible = false;
- let res = null;
- try {
- switch (this.addTreeForm.addTypeArr.length) {
- case 1:
- console.log(this.addTreeForm);
- res = await addMaterial({
- ...this.addTreeForm,
- type: this.addTreeForm.addTypeArr.pop(),
- });
- break;
- case 2:
- console.log(this.addTreeForm);
- res = await addStandards({
- ...this.addTreeForm,
- materialId: this.addTreeForm.addTypeArr.pop(),
- });
- break;
- case 3:
- console.log(this.addTreeForm);
- res = await addSpecifications({
- ...this.addTreeForm,
- standardId: this.addTreeForm.addTypeArr.pop(),
- });
- break;
- }
- } catch (error) {
- this.$message.error("娣诲姞澶辫触");
- }
+ import {
+ selectproductModelApi
+ } from "@/api/basicData/index";
+ import {
+ Tree
+ } from "element-ui";
+ export default {
+ data() {
+ return {
+ options: [],
+ versionValue: "",
+ deleteList: [],
+ msg: "",
+ isAllSelect: false,
+ addTreeFormVisible: false,
+ filterText: "",
+ // 鏍囧噯搴揵om鏍�
+ standardTree: [],
+ // bom鐨�,榛樿閰嶇疆鍊�
+ defaultProps: {
+ children: "children",
+ label: "name",
+ value: "id",
+ },
+ tableData: [],
+ oldtableData: [],
+ tablespecifications: [],
+ // 閫変腑鐨勮妭鐐规暟鎹�
+ selectData: {},
+ formTypeOptions: [],
+ addTreeForm: {
+ addTypeArr: [],
+ }
+ };
+ },
+ watch: {
+ filterText(val) {
+ this.$refs.tree.filter(val);
+ }
+ },
+ created() {
+ this.getStandardTree();
+ },
+ mounted() {},
+ methods: {
+ async initSelect() {
+ this.options = [];
+ this.versionValue = "";
+ const response = await getVersion({
+ specificationsId: this.selectData.id,
+ });
+ if (response.code === 200 && response.data.length > 0) {
+ this.getTableByClick(this.selectData, response.data[0]);
+ for (let i = 0; i < response.data.length; i++) {
+ this.options.push({
+ value: response.data[i],
+ label: "V" + response.data[i],
+ });
+ this.versionValue = response.data[0];
+ }
+ }
+ },
+ changeSelect() {
+ this.tableData = [];
+ this.getTableByClick(this.selectData, this.versionValue);
+ },
+ async insertVersion() {
+ const resp = await addVersion({
+ specificationsId: this.selectData.id
+ });
+ if (resp.code === 200) {
+ this.initSelect();
+ this.$message({
+ type: "success",
+ message: resp.message,
+ });
+ }
+ },
+ addVersionFun() {
+ this.$confirm("纭娣诲姞鏂扮殑鐗堟湰鍙峰悧?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ this.insertVersion();
+ })
+ .catch(() => {});
+ },
+ filterNode(value, data) {
+ if (!value) return true;
+ return data.name.indexOf(value) !== -1;
+ },
+ // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁
+ async getStandardTree() {
+ let {
+ data
+ } = await getMaterialList();
+ if (data.length < 2) {
+ if (data.length == 0) {
+ data = [{
+ type: 0
+ }, {
+ type: 1
+ }]
+ } else {
+ data[1] = {
+ type: data[0].type == 1 ? 0 : 1
+ }
+ }
+ }
+ this.standardTree = data.map((item) => {
+ let name = null;
+ switch (item.type) {
+ case 0:
+ name = "鍘熸潗鏂�";
+ break;
+ case 1:
+ name = "鎴愬搧";
+ break;
+ }
+ return {
+ ...item,
+ id: item.type,
+ name,
+ };
+ });
+ // formTypeOptions
+ // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤�
+ const treeOptions = JSON.parse(JSON.stringify(this.standardTree));
+ this.getDefault(treeOptions, 0);
+ this.formTypeOptions = treeOptions;
+ this.$nextTick().then(() => {
+ const firstNode = document.querySelector(
+ ".el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node"
+ );
+ try {
+ firstNode.click();
+ } catch (e) {
+ //TODO handle the exception
+ }
+ });
+ },
+ getDefault(arr, index) {
+ for (const item of arr) {
+ if (item.children && item.children?.length > 0) {
+ // 鏈夊瓙鑺傜偣
+ this.getDefault(item.children, index + 1);
+ if (index === 2) {
+ item.children = null;
+ }
+ }
+ }
+ },
+ // 鐐瑰嚮bom鏍戣妭鐐规柟娉�
+ async nodeClick(data, node, element) {
+ // 鏄瓙鑺傜偣
+ if (node.level === 4) {
+ this.getParentData(node.parent, node.data.name);
+ // 瀛樹笅閫変腑鑺傜偣
+ this.selectData = data;
+ this.getTableByClick(data, this.versionValue);
+ this.initSelect();
+ }
+ if (!("children" in data)) {
+ return;
+ }
+ },
+ // 鑾峰彇鏍戣矾寰�
+ getParentData(node, name) {
+ if (node !== null) {
+ if (node.data.name !== undefined) {
+ this.msg = node.data.name + " > " + name;
+ }
+ this.getParentData(node.parent, this.msg);
+ }
+ },
+ async getTableByClick(data, versionVal) {
+ await getProductList({
+ specificationsId: data.id,
+ version: versionVal,
+ }).then((res) => {
+ res.data.forEach((i) => {
+ if (i.name === undefined) {
+ i.name = i.children[0].name;
+ i.unit = i.children[0].unit;
+ i.id = i.children[0].id;
+ i.required = i.children[0].required;
+ i.internal = i.children[0].internal;
+ i.edit = true;
+ delete i.children;
+ }
+ });
+ this.tableData = res.data;
+ this.selectDataList();
+ });
+ },
+ specificationDetails(row) {
+ // 璺宠浆浜у搧瑙勬牸璇︽儏椤�
+ this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`);
+ },
+ renderContent(h, {
+ node,
+ data,
+ store
+ }) {
+ // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す
+ const isFolder = "children" in data;
+ return ( <
+ span class = "tree-node" > {
+ isFolder ? ( <
+ i class = {
+ node.expanded ?
+ "el-icon-folder-opened blue-folder" : "el-icon-folder blue-folder"
+ } >
+ <
+ /i>
+ ) : ( <
+ i class = "el-icon-document blue-folder" > < /i>
+ )
+ } <
+ div class = "tree-lable" > [{
+ node.level
+ }] {
+ data.name
+ } <
+ /div> < /
+ span >
+ );
+ },
+ async subAddTreeForm() {
+ let res = null;
+ try {
+ switch (this.addTreeForm.addTypeArr.length) {
+ case 1:
+ res = await addMaterial({
+ ...this.addTreeForm,
+ type: this.addTreeForm.addTypeArr[0],
+ });
+ break;
+ case 2:
+ res = await addStandards({
+ ...this.addTreeForm,
+ materialId: this.addTreeForm.addTypeArr[1],
+ });
+ break;
+ case 3:
+ res = await addSpecifications({
+ ...this.addTreeForm,
+ standardId: this.addTreeForm.addTypeArr[2],
+ });
+ break;
+ }
+ } catch (error) {
+ this.$message.error("娣诲姞澶辫触");
+ }
+ this.$message.success("娣诲姞鎴愬姛");
+ this.addTreeFormVisible = false;
+ this.getStandardTree();
+ this.getTableByClick(this.selectData, this.versionValue);
+ },
+ changeCascader(data) {
+ this.addTreeForm.addTypeArr = data;
+ },
+ selectProductModelTable() {
+ selectproductModelApi(this.params).then((res) => {
+ res.data.forEach((i) => {
+ if (i.name === undefined) {
+ i.name = i.children[0].name;
+ i.unit = i.children[0].unit;
+ i.id = i.children[0].id;
+ i.edit = true;
+ delete i.children;
+ }
+ });
+ this.tableData = res.data;
+ this.selectDataList();
+ });
+ },
+ selectDataList() {
+ this.tableData.forEach((a) => {
+ a.code = "[1]";
+ if (a.children != undefined) {
+ a.children.forEach((b) => {
+ b.code = "[2]";
+ });
+ }
+ });
+ },
+ // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+ // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+ selectAll(val) {
+ this.isAllSelect = !this.isAllSelect;
+ let data = this.tableData;
+ this.toggleSelect(data, this.isAllSelect, "all");
+ },
+ //閫夋嫨鏌愯
+ selectTr(selection, row) {
+ this.$set(row, "isChecked", !row.isChecked);
+ this.$nextTick(() => {
+ this.isAllSelect = row.isChecked;
+ this.toggleSelect(row, row.isChecked, "tr");
+ });
+ },
+ //閫掑綊瀛愮骇
+ toggleSelect(data, flag, type) {
+ if (type === "all") {
+ if (data.length > 0) {
+ data.forEach((item) => {
+ this.toggleSelection(item, flag);
+ if (item.children && item.children.length > 0) {
+ this.toggleSelect(item.children, flag, type);
+ }
+ });
+ }
+ } else {
+ if (data.children && data.children.length > 0) {
+ data.children.forEach((item) => {
+ item.isChecked = !item.isChecked;
+ this.$refs.multipleTable.toggleRowSelection(item, flag);
+ this.toggleSelect(item, flag, type);
+ });
+ }
+ }
+ },
+ //鏀瑰彉閫変腑
+ toggleSelection(row, flag) {
+ this.$set(row, "isChecked", flag);
+ this.$nextTick(() => {
+ if (flag) {
+ this.$refs.multipleTable.toggleRowSelection(row, flag);
+ } else {
+ this.$refs.multipleTable.clearSelection();
+ }
+ });
+ },
+ handleSelectionChange(val) {
+ this.deleteList = [];
+ val.forEach((v) => {
+ if (v.id !== undefined) {
+ this.deleteList.push(v.id);
+ }
+ });
+ },
+ // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫
+ deleteListClick() {
+ if(this.deleteList.length==0){
+ this.$message.error('璇烽�夋嫨瑕佸垹闄ょ殑椤圭洰')
+ return
+ }
+ deleteListApi(this.deleteList).then((res) => {
+ this.$message({
+ message: res.message,
+ type: "success",
+ });
+ this.getTableByClick(this.selectData, this.versionValue);
+ });
+ },
+ async requiredOnfocus(scope) {
+ let obj = {
+ id: scope.row.id,
+ required: scope.row.required,
+ internal: scope.row.internal,
+ };
- this.$message.success("娣诲姞鎴愬姛");
- this.addTreeForm = {
- addTypeArr: [],
- };
- this.getStandardTree();
- this.getTableByClick(this.selectData, this.versionValue);
- },
- changeCascader(data) {
- this.addTreeForm.addTypeArr = data;
- },
- closeAddTreeForm() {
- this.addTreeForm = {
- addTypeArr: [],
- };
- console.log(this.addTreeForm);
- },
- /** 琛ㄦ牸鏌愯鐐瑰嚮浜嬩欢 */
- // handleRowClick(row, column, event) {
- // // 鍒ゆ柇褰撳墠琛屾槸鍚︽湁瀛愰泦锛岃嫢娌℃湁鍒欑粨鏉熷鐞�
- // // console.log(row)
- // if (!row.children) return
- // this.$refs.tableData.toggleRowExpansion(row)
- // }
- selectProductModelTable() {
- selectproductModelApi(this.params).then((res) => {
- res.data.forEach((i) => {
- if (i.name === undefined) {
- i.name = i.children[0].name;
- i.unit = i.children[0].unit;
- i.id = i.children[0].id;
- i.edit = true;
- delete i.children;
- }
- });
- this.tableData = res.data;
- this.selectDataList();
- });
- },
- selectDataList() {
- this.tableData.forEach((a) => {
- a.code = "[1]";
- if (a.children != undefined) {
- a.children.forEach((b) => {
- b.code = "[2]";
- });
- }
- });
- },
- // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
- // 鍏ㄩ��/鍙栨秷閫夋搷浣�
- selectAll(val) {
- this.isAllSelect = !this.isAllSelect;
- let data = this.tableData;
- this.toggleSelect(data, this.isAllSelect, "all");
- },
- //閫夋嫨鏌愯
- selectTr(selection, row) {
- this.$set(row, "isChecked", !row.isChecked);
- this.$nextTick(() => {
- this.isAllSelect = row.isChecked;
- this.toggleSelect(row, row.isChecked, "tr");
- });
- },
- //閫掑綊瀛愮骇
- toggleSelect(data, flag, type) {
- if (type === "all") {
- if (data.length > 0) {
- data.forEach((item) => {
- this.toggleSelection(item, flag);
- if (item.children && item.children.length > 0) {
- this.toggleSelect(item.children, flag, type);
- }
- });
- }
- } else {
- if (data.children && data.children.length > 0) {
- data.children.forEach((item) => {
- item.isChecked = !item.isChecked;
- this.$refs.multipleTable.toggleRowSelection(item, flag);
- this.toggleSelect(item, flag, type);
- });
- }
- }
- },
- //鏀瑰彉閫変腑
- toggleSelection(row, flag) {
- this.$set(row, "isChecked", flag);
- this.$nextTick(() => {
- if (flag) {
- this.$refs.multipleTable.toggleRowSelection(row, flag);
- } else {
- this.$refs.multipleTable.clearSelection();
- }
- });
- },
- handleSelectionChange(val) {
- this.deleteList = [];
- val.forEach((v) => {
- if (v.id !== undefined) {
- this.deleteList.push(v.id);
- }
- });
- console.log(`output->this.deleteList`, this.deleteList);
- },
- // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫
- deleteListClick() {
- deleteListApi(this.deleteList).then((res) => {
- this.$message({
- message: res.message,
- type: "success",
- });
- this.getTableByClick(this.selectData, this.versionValue);
- });
- },
- async requiredOnfocus(scope) {
- let obj = {
- id: scope.row.id,
- required: scope.row.required,
- internal: scope.row.internal,
- };
-
- await blurUpdateApi(obj).then((res) => {
- this.$message({
- message: res.message,
- type: "success",
- });
- this.getTableByClick(this.selectData, this.versionValue);
- });
- },
- },
-};
+ await blurUpdateApi(obj).then((res) => {
+ this.$message({
+ message: res.message,
+ type: "success",
+ });
+ this.getTableByClick(this.selectData, this.versionValue);
+ });
+ },
+ },
+ };
</script>
<style lang="scss" scoped>
-// el-table琛ㄦ牸瀵归綈
-::v-deep .el-table__row:not([class*="el-table__row--level-"]) {
- td:nth-child(2) {
- padding-left: 23px !important;
- }
-}
-.standard-library-main {
- width: 100vh;
- height: 100%;
- // 椤甸潰涓績鍐呭鍖哄煙
- .content-main {
- display: flex;
- height: 100%;
- min-height: calc(100vh - 88px);
- max-height: calc(100vh - 88px);
- padding: 15px;
- > div {
- padding: 20px;
- background: #fff;
- }
- .library-bom {
- // padding-right: 10px;
- width: 300px;
- overflow-y: auto;
- // height: 100%;
- max-height: 100%;
- // margin-right: 12px;
- // overflow-y: scroll;
- .el-tree {
- // margin-top:
- width: 100%;
- ::v-deep .el-tree-node__content {
- height: 24px !important;
- font-size: 18px;
- // display: inline-block !important;
- padding: 2px;
- // color: #333;
- .tree-node {
- display: flex;
- align-items: center;
- height: 20px;
- }
- .tree-lable {
- height: 100%;
- line-height: 23px;
- font-size: 12px;
- padding-left: 8px;
- }
- .blue-folder {
- color: rgb(64, 158, 255);
- }
- }
- }
- }
- .library-table {
- // height: 100%;
- width: 170vh;
- max-height: 100%;
- // flex: 8;
- margin-left: 12px;
- display: flex;
- flex-direction: column;
- // overflow-y: scroll;
- .table-header {
- display: flex;
- justify-content: space-between;
- width: 100%;
- .el-form-item {
- margin-bottom: 30px !important;
- }
- }
- .table-box {
- flex: 1;
- background: #fff;
- // padding: 20px 20px 10px 20px;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- > div:nth-child(3) {
- // height: 20px;
- display: flex;
- justify-content: end;
- margin: 10px 0;
- }
- }
- }
- }
- .addTree {
- .el-form-item {
- margin-bottom: 10px;
- }
- .el-cascader {
- width: 100%;
- }
- }
-}
-.search-bar {
- .el-input {
- position: relative;
- font-size: 0.07292rem;
- display: inline-block;
- width: 70%;
- }
-}
-.firstDiv {
- float: left;
- width: 20px;
- height: 20px;
- border-radius: 50%;
- background-color: #eff5ff;
- margin-top: 5px;
- justify-content: center;
- display: flex;
- align-items: center;
- margin-right: 8px;
-}
-.el-tag.el-tag {
- border-color: transparent;
- background-color: transparent;
-}
-.el-tag.el-tag:hover {
- border-color: transparent;
- background-color: transparent;
-}
-.serve-btn {
- width: 100%;
- padding-bottom: 6px;
- text-align: right;
- .el-select {
- margin-right: 10px;
- }
-}
-.tipMsg {
- float: left;
- font-size: 16px;
- font-weight: 500;
- color: #999999;
-}
-</style>
+ // el-table琛ㄦ牸瀵归綈
+ ::v-deep .el-table__row:not([class*="el-table__row--level-"]) {
+ td:nth-child(2) {
+ padding-left: 23px !important;
+ }
+ }
+
+ .standard-library-main {
+ width: 100vh;
+ height: 100%;
+
+ // 椤甸潰涓績鍐呭鍖哄煙
+ .content-main {
+ display: flex;
+ height: 100%;
+ min-height: calc(100vh - 88px);
+ max-height: calc(100vh - 88px);
+ padding: 15px;
+
+ >div {
+ padding: 20px;
+ background: #fff;
+ }
+
+ .library-bom {
+ // padding-right: 10px;
+ width: 300px;
+ overflow-y: auto;
+ // height: 100%;
+ max-height: 100%;
+
+ // margin-right: 12px;
+ // overflow-y: scroll;
+ .el-tree {
+ // margin-top:
+ width: 100%;
+
+ ::v-deep .el-tree-node__content {
+ height: 24px !important;
+ font-size: 18px;
+ // display: inline-block !important;
+ padding: 2px;
+
+ // color: #333;
+ .tree-node {
+ display: flex;
+ align-items: center;
+ height: 20px;
+ }
+
+ .tree-lable {
+ height: 100%;
+ line-height: 23px;
+ font-size: 12px;
+ padding-left: 8px;
+ }
+
+ .blue-folder {
+ color: rgb(64, 158, 255);
+ }
+ }
+ }
+ }
+
+ .library-table {
+ // height: 100%;
+ width: 170vh;
+ max-height: 100%;
+ // flex: 8;
+ margin-left: 12px;
+ display: flex;
+ flex-direction: column;
+
+ // overflow-y: scroll;
+ .table-header {
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+
+ .el-form-item {
+ margin-bottom: 30px !important;
+ }
+ }
+
+ .table-box {
+ flex: 1;
+ background: #fff;
+ // padding: 20px 20px 10px 20px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+
+ >div:nth-child(3) {
+ // height: 20px;
+ display: flex;
+ justify-content: end;
+ margin: 10px 0;
+ }
+ }
+ }
+ }
+
+ .addTree {
+ .el-form-item {
+ margin-bottom: 10px;
+ }
+
+ .el-cascader {
+ width: 100%;
+ }
+ }
+ }
+
+ .search-bar {
+ .el-input {
+ position: relative;
+ font-size: 0.07292rem;
+ display: inline-block;
+ width: 70%;
+ }
+ }
+
+ .firstDiv {
+ float: left;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background-color: #eff5ff;
+ margin-top: 5px;
+ justify-content: center;
+ display: flex;
+ align-items: center;
+ margin-right: 8px;
+ }
+
+ .el-tag.el-tag {
+ border-color: transparent;
+ background-color: transparent;
+ }
+
+ .el-tag.el-tag:hover {
+ border-color: transparent;
+ background-color: transparent;
+ }
+
+ .serve-btn {
+ width: 100%;
+ padding-bottom: 6px;
+ text-align: right;
+
+ .el-select {
+ margin-right: 10px;
+ }
+ }
+
+ .tipMsg {
+ float: left;
+ font-size: 16px;
+ font-weight: 500;
+ color: #999999;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3