|
@@ -1,21 +1,51 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <el-dialog :title="title" :visible.sync="visible" v-if="visible" :before-close="handleClose"
|
|
|
|
|
- :close-on-click-modal="false" :close-on-press-escape="false" append-to-body width="75%">
|
|
|
|
|
-
|
|
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ :title="title"
|
|
|
|
|
+ :visible.sync="visible"
|
|
|
|
|
+ v-if="visible"
|
|
|
|
|
+ :before-close="handleClose"
|
|
|
|
|
+ :close-on-click-modal="false"
|
|
|
|
|
+ :close-on-press-escape="false"
|
|
|
|
|
+ append-to-body
|
|
|
|
|
+ width="75%"
|
|
|
|
|
+ >
|
|
|
<!-- 选择产品分类 -->
|
|
<!-- 选择产品分类 -->
|
|
|
<el-card shadow="never">
|
|
<el-card shadow="never">
|
|
|
<ProductSearch @search="reload" ref="searchRef" />
|
|
<ProductSearch @search="reload" ref="searchRef" />
|
|
|
|
|
|
|
|
- <ele-split-layout width="244px" allow-collapse :right-style="{ overflow: 'hidden' }">
|
|
|
|
|
|
|
+ <ele-split-layout
|
|
|
|
|
+ width="244px"
|
|
|
|
|
+ allow-collapse
|
|
|
|
|
+ :right-style="{ overflow: 'hidden' }"
|
|
|
|
|
+ >
|
|
|
<div class="ele-border-lighter split-layout-right-content">
|
|
<div class="ele-border-lighter split-layout-right-content">
|
|
|
- <el-tree :data="treeList" :props="defaultProps" ref="treeRef"
|
|
|
|
|
- :default-expanded-keys="current && current.id ? [current.id] : []" :highlight-current="true" node-key="id"
|
|
|
|
|
- @node-click="handleNodeClick"></el-tree>
|
|
|
|
|
|
|
+ <el-tree
|
|
|
|
|
+ :data="treeList"
|
|
|
|
|
+ :props="defaultProps"
|
|
|
|
|
+ ref="treeRef"
|
|
|
|
|
+ :default-expanded-keys="current && current.id ? [current.id] : []"
|
|
|
|
|
+ :highlight-current="true"
|
|
|
|
|
+ node-key="id"
|
|
|
|
|
+ @node-click="handleNodeClick"
|
|
|
|
|
+ ></el-tree>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 表格 -->
|
|
<!-- 表格 -->
|
|
|
<template v-slot:content>
|
|
<template v-slot:content>
|
|
|
- <ele-pro-table ref="table" :columns="columns" :datasource="datasource" :selection.sync="selection"
|
|
|
|
|
- row-key="id" height="calc(100vh - 350px)" class="dict-table">
|
|
|
|
|
|
|
+ <ele-pro-table
|
|
|
|
|
+ ref="table"
|
|
|
|
|
+ :columns="columns"
|
|
|
|
|
+ :datasource="datasource"
|
|
|
|
|
+ :selection.sync="selection"
|
|
|
|
|
+ row-key="id"
|
|
|
|
|
+ height="calc(100vh - 350px)"
|
|
|
|
|
+ class="dict-table"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template v-slot:componentAttribute="{ row }">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <!-- {{ }} -->
|
|
|
|
|
+ {{ getDictValueFn(row.componentAttribute) }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
</ele-pro-table>
|
|
</ele-pro-table>
|
|
|
</template>
|
|
</template>
|
|
|
</ele-split-layout>
|
|
</ele-split-layout>
|
|
@@ -28,249 +58,368 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
-import ProductSearch from '@/components/select/bom/product-search.vue';
|
|
|
|
|
-import { getMaterialList } from '@/api/material/list.js';
|
|
|
|
|
-import { sourceBomVersion } from '@/api/material/BOM';
|
|
|
|
|
-import { getTreeByGroup } from '@/api/classifyManage';
|
|
|
|
|
-export default {
|
|
|
|
|
- components: { ProductSearch },
|
|
|
|
|
- data() {
|
|
|
|
|
- return {
|
|
|
|
|
- visible: false,
|
|
|
|
|
- type: 1,
|
|
|
|
|
- selection: [],
|
|
|
|
|
- // 表格列配置
|
|
|
|
|
- columns: [
|
|
|
|
|
- {
|
|
|
|
|
- columnKey: 'selection',
|
|
|
|
|
- type: 'selection',
|
|
|
|
|
- width: 45,
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- selectable: (row, index) => {
|
|
|
|
|
- if (Array.isArray(this.selectList)) {
|
|
|
|
|
- return !this.selectList.some((it) => row.id == it.id);
|
|
|
|
|
- } else {
|
|
|
|
|
- return true;
|
|
|
|
|
|
|
+ import ProductSearch from '@/components/select/bom/product-search.vue';
|
|
|
|
|
+ import { getMaterialList } from '@/api/material/list.js';
|
|
|
|
|
+ import { sourceBomVersion } from '@/api/material/BOM';
|
|
|
|
|
+ import { getTreeByGroup } from '@/api/classifyManage';
|
|
|
|
|
+ import { getByCode } from '@/api/system/dictionary-data';
|
|
|
|
|
+ import { produceTypeList } from '@/enum/dict.js';
|
|
|
|
|
+
|
|
|
|
|
+ const measureTypeList = [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '数量',
|
|
|
|
|
+ value: 1
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '重量',
|
|
|
|
|
+ value: 2
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '体积',
|
|
|
|
|
+ value: 3
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '容积',
|
|
|
|
|
+ value: 4
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '面积',
|
|
|
|
|
+ value: 5
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ export default {
|
|
|
|
|
+ components: { ProductSearch },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ visible: false,
|
|
|
|
|
+ type: 1,
|
|
|
|
|
+ selection: [],
|
|
|
|
|
+ // 表格列配置
|
|
|
|
|
+ columns: [
|
|
|
|
|
+ {
|
|
|
|
|
+ columnKey: 'selection',
|
|
|
|
|
+ type: 'selection',
|
|
|
|
|
+ width: 45,
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ selectable: (row, index) => {
|
|
|
|
|
+ if (Array.isArray(this.selectList)) {
|
|
|
|
|
+ return !this.selectList.some((it) => row.id == it.id);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ reserveSelection: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ columnKey: 'index',
|
|
|
|
|
+ type: 'index',
|
|
|
|
|
+ width: 45,
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ reserveSelection: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'code',
|
|
|
|
|
+ label: '编码'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'name',
|
|
|
|
|
+ label: '名称',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'brandNum',
|
|
|
|
|
+ label: '牌号'
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'componentAttribute',
|
|
|
|
|
+ slot: 'componentAttribute',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '属性类型',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ // formatter: (row, column) => {
|
|
|
|
|
+ // return row?.produceType
|
|
|
|
|
+ // ?.map((item) => {
|
|
|
|
|
+ // {{row}}
|
|
|
|
|
+ // return this.getDictValueFn(item);
|
|
|
|
|
+ // })
|
|
|
|
|
+ // ?.toString();
|
|
|
|
|
+ // }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'attributeType',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '存货类型',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ formatter: (row, column) => {
|
|
|
|
|
+ const item = this.attributeList.find(
|
|
|
|
|
+ (item) => item[row.attributeType] !== undefined
|
|
|
|
|
+ );
|
|
|
|
|
+ return item ? item[row.attributeType] : null; // 如果找不到返回 null
|
|
|
}
|
|
}
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'produceType',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '生产类型',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ formatter: (row, column) => {
|
|
|
|
|
+ return produceTypeList.find(
|
|
|
|
|
+ (item) => item.value == row.produceType
|
|
|
|
|
+ )?.label;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'measureType',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '计量类型',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ formatter: (row, column) => {
|
|
|
|
|
+ return measureTypeList.find(
|
|
|
|
|
+ (item) => item.value == row.measureType
|
|
|
|
|
+ )?.label;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'modelType',
|
|
|
|
|
+ label: '型号',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'specification',
|
|
|
|
|
+ label: '规格',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'measuringUnit',
|
|
|
|
|
+ label: '计量单位',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 90
|
|
|
},
|
|
},
|
|
|
- reserveSelection: true,
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- columnKey: 'index',
|
|
|
|
|
- type: 'index',
|
|
|
|
|
- width: 45,
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- reserveSelection: true
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'code',
|
|
|
|
|
- label: '编码'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'name',
|
|
|
|
|
- label: '名称',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'brandNum',
|
|
|
|
|
- label: '牌号'
|
|
|
|
|
- },
|
|
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'modelType',
|
|
|
|
|
- label: '型号',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'specification',
|
|
|
|
|
- label: '规格',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'measuringUnit',
|
|
|
|
|
- label: '计量单位',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 90
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'weightUnit',
|
|
|
|
|
+ label: '重量单位',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 90
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'weightUnit',
|
|
|
|
|
- label: '重量单位',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 90
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'roughWeight',
|
|
|
|
|
+ label: '毛重',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 90
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'roughWeight',
|
|
|
|
|
- label: '毛重',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 90
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'netWeight',
|
|
|
|
|
+ label: '净重',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 90
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'netWeight',
|
|
|
|
|
- label: '净重',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 90
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'packingUnit',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '包装单位',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'categoryLevelPath',
|
|
|
|
|
+ label: '分类',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'packingUnit',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- label: '包装单位',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'categoryLevelPath',
|
|
|
|
|
- label: '分类',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ action: 'action',
|
|
|
|
|
+ slot: 'action',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '选择'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ isshow: false,
|
|
|
|
|
+ title: null,
|
|
|
|
|
+ categoryLevelId: null,
|
|
|
|
|
+ radio: null,
|
|
|
|
|
+ idx: null,
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- action: 'action',
|
|
|
|
|
- slot: 'action',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- label: '选择'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- isshow:false,
|
|
|
|
|
- title: null,
|
|
|
|
|
- categoryLevelId: null,
|
|
|
|
|
- radio: null,
|
|
|
|
|
- idx: null,
|
|
|
|
|
|
|
+ isCategory: true,
|
|
|
|
|
|
|
|
- isCategory: true,
|
|
|
|
|
|
|
+ current: {},
|
|
|
|
|
|
|
|
- current: {},
|
|
|
|
|
|
|
+ treeList: [],
|
|
|
|
|
+ treeLoading: false,
|
|
|
|
|
+
|
|
|
|
|
+ defaultProps: {
|
|
|
|
|
+ children: 'children',
|
|
|
|
|
+ label: 'name'
|
|
|
|
|
+ },
|
|
|
|
|
+ attributeList: [],
|
|
|
|
|
+ sxtList: [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '自制件',
|
|
|
|
|
+ value: 1
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '采购件',
|
|
|
|
|
+ value: 2
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '外协件',
|
|
|
|
|
+ value: 3
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '受托件',
|
|
|
|
|
+ value: 4
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- treeList: [],
|
|
|
|
|
- treeLoading: false,
|
|
|
|
|
|
|
+ watch: {},
|
|
|
|
|
|
|
|
- defaultProps: {
|
|
|
|
|
- children: 'children',
|
|
|
|
|
- label: 'name'
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- watch: {},
|
|
|
|
|
- methods: {
|
|
|
|
|
- /* 表格数据源 */
|
|
|
|
|
- datasource({ page, where, limit }) {
|
|
|
|
|
- return getMaterialList({
|
|
|
|
|
- ...where,
|
|
|
|
|
- pageNum: page,
|
|
|
|
|
- size: limit,
|
|
|
|
|
- categoryLevelId: this.isCategory ? this.categoryLevelId : null
|
|
|
|
|
|
|
+ created() {
|
|
|
|
|
+ getByCode('inventory_type').then((res) => {
|
|
|
|
|
+ if (res.code === '0') {
|
|
|
|
|
+ this.attributeList = res.data;
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
|
|
+ this.requestDict('生产类型');
|
|
|
},
|
|
},
|
|
|
- handleNodeClick(data) {
|
|
|
|
|
- this.isCategory = true;
|
|
|
|
|
- this.categoryLevelId = data.id;
|
|
|
|
|
- this.$refs.table.reload({ pageNum: 1, where: {} });
|
|
|
|
|
- this.$refs.searchRef.reset2();
|
|
|
|
|
- },
|
|
|
|
|
- /* 刷新表格 */
|
|
|
|
|
- reload(where) {
|
|
|
|
|
- this.isCategory = false;
|
|
|
|
|
- this.$refs.table.reload({ pageNum: 1, where: where });
|
|
|
|
|
- },
|
|
|
|
|
- open(list) {
|
|
|
|
|
-
|
|
|
|
|
- if (Array.isArray(list)) {
|
|
|
|
|
- this.isshow = true;
|
|
|
|
|
- this.selectList = list;
|
|
|
|
|
- } else {
|
|
|
|
|
- this.isshow = false;
|
|
|
|
|
- this.type = list;
|
|
|
|
|
- }
|
|
|
|
|
- this.getTreeData();
|
|
|
|
|
- this.visible = true;
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ /* 表格数据源 */
|
|
|
|
|
+ datasource({ page, where, limit }) {
|
|
|
|
|
+ return getMaterialList({
|
|
|
|
|
+ ...where,
|
|
|
|
|
+ pageNum: page,
|
|
|
|
|
+ size: limit,
|
|
|
|
|
+ categoryLevelId: this.isCategory ? this.categoryLevelId : null
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- async getTreeData() {
|
|
|
|
|
- try {
|
|
|
|
|
- this.treeLoading = true;
|
|
|
|
|
-
|
|
|
|
|
- const res = await getTreeByGroup({ type: 1 });
|
|
|
|
|
- this.treeLoading = false;
|
|
|
|
|
- if (res?.code === '0') {
|
|
|
|
|
- this.treeList = res.data;
|
|
|
|
|
-
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- // 默认高亮第一级树节点
|
|
|
|
|
- if (this.treeList[0]) {
|
|
|
|
|
- this.rootTreeId = this.treeList[0].id;
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- this.$refs.treeRef.setCurrentKey(this.treeList[0].id);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ getDictValueFn(e) {
|
|
|
|
|
+ // console.log(e,'3333333333333');
|
|
|
|
|
+ if (e.length) {
|
|
|
|
|
+ let arr = [];
|
|
|
|
|
+ e.map((v) => {
|
|
|
|
|
+ arr.push(this.findFn(v)?.label);
|
|
|
});
|
|
});
|
|
|
- return this.treeList;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ return arr.join(',');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return '';
|
|
|
}
|
|
}
|
|
|
- } catch (error) { }
|
|
|
|
|
- this.treeLoading = false;
|
|
|
|
|
- },
|
|
|
|
|
- handleClose() {
|
|
|
|
|
- this.visible = false;
|
|
|
|
|
- this.current = null;
|
|
|
|
|
- this.radio = '';
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ // let a =
|
|
|
|
|
|
|
|
- selected() {
|
|
|
|
|
- if (this.selection.length <= 0) {
|
|
|
|
|
- return this.$message.warning('请至少选择一条数据');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- console.log(this.selection, '我是选择数据',this.type,this.isshow);
|
|
|
|
|
|
|
+ // return a?.label||''
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
|
|
+ findFn(e) {
|
|
|
|
|
+ return this.sxtList.find((item) => item.value == Number(e));
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ handleNodeClick(data) {
|
|
|
|
|
+ this.isCategory = true;
|
|
|
|
|
+ this.categoryLevelId = data.id;
|
|
|
|
|
+ this.$refs.table.reload({ pageNum: 1, where: {} });
|
|
|
|
|
+ this.$refs.searchRef.reset2();
|
|
|
|
|
+ },
|
|
|
|
|
+ /* 刷新表格 */
|
|
|
|
|
+ reload(where) {
|
|
|
|
|
+ this.isCategory = false;
|
|
|
|
|
+ this.$refs.table.reload({ pageNum: 1, where: where });
|
|
|
|
|
+ },
|
|
|
|
|
+ open(list) {
|
|
|
|
|
+ if (Array.isArray(list)) {
|
|
|
|
|
+ this.isshow = true;
|
|
|
|
|
+ this.selectList = list;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.isshow = false;
|
|
|
|
|
+ this.type = list;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.getTreeData();
|
|
|
|
|
+ this.visible = true;
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- if (Array.isArray(this.selection)&&this.isshow) {
|
|
|
|
|
|
|
+ async getTreeData() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ this.treeLoading = true;
|
|
|
|
|
|
|
|
- this.$emit('selection', this.selection);
|
|
|
|
|
|
|
+ const res = await getTreeByGroup({ type: 1 });
|
|
|
|
|
+ this.treeLoading = false;
|
|
|
|
|
+ if (res?.code === '0') {
|
|
|
|
|
+ this.treeList = res.data;
|
|
|
|
|
+
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ // 默认高亮第一级树节点
|
|
|
|
|
+ if (this.treeList[0]) {
|
|
|
|
|
+ this.rootTreeId = this.treeList[0].id;
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ this.$refs.treeRef.setCurrentKey(this.treeList[0].id);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ return this.treeList;
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {}
|
|
|
|
|
+ this.treeLoading = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ handleClose() {
|
|
|
|
|
+ this.visible = false;
|
|
|
|
|
+ this.current = null;
|
|
|
|
|
+ this.radio = '';
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ selected() {
|
|
|
|
|
+ if (this.selection.length <= 0) {
|
|
|
|
|
+ return this.$message.warning('请至少选择一条数据');
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
|
|
+ console.log(this.selection, '我是选择数据', this.type, this.isshow);
|
|
|
|
|
|
|
|
- this.$emit('selection', this.type, this.selection);
|
|
|
|
|
|
|
+ if (Array.isArray(this.selection) && this.isshow) {
|
|
|
|
|
+ this.$emit('selection', this.selection);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$emit('selection', this.type, this.selection);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.handleClose();
|
|
|
}
|
|
}
|
|
|
- this.handleClose();
|
|
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
|
|
+ };
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-.tree_col {
|
|
|
|
|
- border: 1px solid #eee;
|
|
|
|
|
- padding: 10px 0;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
- height: 500px;
|
|
|
|
|
- overflow: auto;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.table_col {
|
|
|
|
|
- padding-left: 10px;
|
|
|
|
|
-
|
|
|
|
|
- ::v-deep .el-table th.el-table__cell {
|
|
|
|
|
- background: #f2f2f2;
|
|
|
|
|
|
|
+ .tree_col {
|
|
|
|
|
+ border: 1px solid #eee;
|
|
|
|
|
+ padding: 10px 0;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ height: 500px;
|
|
|
|
|
+ overflow: auto;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-.pagination {
|
|
|
|
|
- text-align: right;
|
|
|
|
|
- padding: 10px 0;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .table_col {
|
|
|
|
|
+ padding-left: 10px;
|
|
|
|
|
|
|
|
-.btns {
|
|
|
|
|
- text-align: center;
|
|
|
|
|
- padding: 10px 0;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ ::v-deep .el-table th.el-table__cell {
|
|
|
|
|
+ background: #f2f2f2;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.topsearch {
|
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .pagination {
|
|
|
|
|
+ text-align: right;
|
|
|
|
|
+ padding: 10px 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .btns {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ padding: 10px 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .topsearch {
|
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
|
+ }
|
|
|
</style>
|
|
</style>
|