|
|
@@ -0,0 +1,341 @@
|
|
|
+<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-card shadow="never">
|
|
|
+ <ProductSearch @search="reload" ref="searchRef" />
|
|
|
+
|
|
|
+ <ele-split-layout width="244px" allow-collapse :right-style="{ overflow: 'hidden' }">
|
|
|
+ <div class="ele-border-lighter split-layout-right-content">
|
|
|
+ <AssetTree ref="assetTreeRef" :id="categoryLevelId" @handleNodeClick="handleNodeClick" />
|
|
|
+ </div>
|
|
|
+ <!-- 表格 -->
|
|
|
+ <template v-slot:content>
|
|
|
+ <ele-pro-table ref="table" :columns="isLedger ? columns2 : columns" :datasource="datasource" row-key="id"
|
|
|
+ height="calc(100vh - 350px)" class="dict-table" @cell-click="cellClick">
|
|
|
+ <!-- 表头工具栏 -->
|
|
|
+ <template v-slot:action="{ row }">
|
|
|
+ <span v-if="deviceList.includes(row.id)">已占用</span>
|
|
|
+ <el-radio v-else class="radio" v-model="radio" :label="row.id"><i></i></el-radio>
|
|
|
+ </template>
|
|
|
+ </ele-pro-table>
|
|
|
+ </template>
|
|
|
+ </ele-split-layout>
|
|
|
+ </el-card>
|
|
|
+ <div class="btns">
|
|
|
+ <el-button type="primary" size="small" @click="selected">选择</el-button>
|
|
|
+ <el-button size="small" @click="handleClose">关闭</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import AssetTree from '@/components/AssetTree';
|
|
|
+import ProductSearch from '@/views/technology/productParam/components/product-search.vue'
|
|
|
+import { getMaterialList } from '@/api/material/list.js';
|
|
|
+import { getAssetList } from '@/api/ledgerAssets/index'
|
|
|
+import {
|
|
|
+ allDeviceList
|
|
|
+} from '@/api/factoryModel';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: { AssetTree, ProductSearch },
|
|
|
+ props: {
|
|
|
+ isLedger: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ visible: false,
|
|
|
+
|
|
|
+ deviceList: [],
|
|
|
+
|
|
|
+ // 表格列配置
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ 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: 'roughWeight',
|
|
|
+ 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
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ action: 'action',
|
|
|
+ slot: 'action',
|
|
|
+ align: 'center',
|
|
|
+ label: '选择'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+
|
|
|
+ columns2: [
|
|
|
+ {
|
|
|
+ columnKey: 'index',
|
|
|
+ type: 'index',
|
|
|
+ label: '序号',
|
|
|
+ width: 55,
|
|
|
+ align: 'center',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'fixCode',
|
|
|
+ label: '固资编码',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'code',
|
|
|
+ label: '编码'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'name',
|
|
|
+ label: '名称',
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ prop: 'codeNumber',
|
|
|
+ label: '编号',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ prop: 'category.modelType',
|
|
|
+ label: '型号',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'category.specification',
|
|
|
+ label: '规格',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'pathName',
|
|
|
+ label: '位置',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110,
|
|
|
+ formatter: (_row) => {
|
|
|
+ return _row.position[0].pathName;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'source',
|
|
|
+ label: '生命周期',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
+ },
|
|
|
+ {
|
|
|
+ action: 'action',
|
|
|
+ slot: 'action',
|
|
|
+ align: 'center',
|
|
|
+ label: '选择'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+
|
|
|
+ title: null,
|
|
|
+ categoryLevelId: null,
|
|
|
+ radio: null,
|
|
|
+ idx: null,
|
|
|
+
|
|
|
+ isCategory: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ created() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ watch: {
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ /* 表格数据源 */
|
|
|
+ datasource({ page, where, limit }) {
|
|
|
+ let URL = this.isLedger ? getAssetList : getMaterialList
|
|
|
+
|
|
|
+ if (this.isCategory) {
|
|
|
+ return URL({
|
|
|
+ ...where,
|
|
|
+ pageNum: page,
|
|
|
+ size: limit,
|
|
|
+ categoryLevelId: this.categoryLevelId
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ return URL({
|
|
|
+ ...where,
|
|
|
+ pageNum: page,
|
|
|
+ size: limit,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ handleNodeClick(data) {
|
|
|
+ this.isCategory = true
|
|
|
+ this.categoryLevelId = data.id;
|
|
|
+ this.$refs.table.reload({ pageNum: 1, where: {} });
|
|
|
+ this.$refs.searchRef.reset2()
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ getAllDeviceList() {
|
|
|
+ allDeviceList().then(res => {
|
|
|
+
|
|
|
+ this.deviceList = res.map(item => {
|
|
|
+ return item.assetId
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /* 刷新表格 */
|
|
|
+ reload(where) {
|
|
|
+ this.isCategory = false
|
|
|
+ this.$refs.table.reload({ pageNum: 1, where: where });
|
|
|
+ },
|
|
|
+ open(item, title, categoryLevelId, idx) {
|
|
|
+ if (item) {
|
|
|
+ this.title = title
|
|
|
+ this.categoryLevelId = categoryLevelId
|
|
|
+ this.idx = idx
|
|
|
+
|
|
|
+ this.current = {
|
|
|
+ id: item.categoryId,
|
|
|
+ name: item.categoryName,
|
|
|
+ code: item.categoryCode
|
|
|
+ }
|
|
|
+ this.radio = item.categoryId
|
|
|
+
|
|
|
+ }
|
|
|
+ this.getAllDeviceList()
|
|
|
+ this.visible = true
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 单击获取id
|
|
|
+ cellClick(row) {
|
|
|
+ this.current = row
|
|
|
+ this.radio = row.id
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.visible = false
|
|
|
+ this.current = null
|
|
|
+ this.radio = ''
|
|
|
+ },
|
|
|
+ selected() {
|
|
|
+ if (!this.current) {
|
|
|
+ return this.$message.warning('请选择工作中心')
|
|
|
+ }
|
|
|
+ this.$emit('changeProduct', this.title, this.current, this.idx)
|
|
|
+ this.handleClose()
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<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;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.pagination {
|
|
|
+ text-align: right;
|
|
|
+ padding: 10px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.btns {
|
|
|
+ text-align: center;
|
|
|
+ padding: 10px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.topsearch {
|
|
|
+ margin-bottom: 15px;
|
|
|
+}
|
|
|
+</style>
|