From eb21013ed92b622cbccb8087a0d62bddd1ce7204 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期四, 09 十一月 2023 17:05:06 +0800
Subject: [PATCH] 1.工艺路线 新增 批量绑定产品功能

---
 src/views/makeModel/processRoute.vue |  299 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 290 insertions(+), 9 deletions(-)

diff --git a/src/views/makeModel/processRoute.vue b/src/views/makeModel/processRoute.vue
index 646808a..a2d6f46 100644
--- a/src/views/makeModel/processRoute.vue
+++ b/src/views/makeModel/processRoute.vue
@@ -45,7 +45,10 @@
               <el-input v-model="form.createuser" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
           </div>
-          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
             <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
             <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
           </div>
@@ -102,7 +105,21 @@
             :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
           >
             <template slot-scope="{row}">
-              <div v-if="!row[item.prop]">/</div>
+
+              <div v-if="item.prop==='isrolepart'">
+                <i
+                  v-if="row[item.prop]!==''"
+                  :style="{color:$store.state.settings.theme}"
+                  class="el-icon-share"
+                  @click="routeClick(row)"
+                />
+                <i
+                  v-if="row[item.prop]===''"
+                  style="color:rgb(180 ,181, 185)"
+                  class="el-icon-share"
+                  @click="routeClick(row)"
+                />
+              </div>
               <div v-else-if="item.prop==='enable'">
                 <div v-if="row[item.prop]==='Y'">
                   <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
@@ -113,7 +130,9 @@
                   鍚�
                 </div>
               </div>
+              <div v-else-if="!row[item.prop]">/</div>
               <div v-else>{{ row[item.prop] }}</div>
+
             </template>
           </el-table-column>
 
@@ -196,10 +215,20 @@
                   />
                 </el-tooltip>
                 <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
-                  <i :style="{color:$store.state.settings.theme}" class="el-icon-delete" style="margin-right:15px;" @click="del(row)" />
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    class="el-icon-delete"
+                    style="margin-right:15px;"
+                    @click="del(row)"
+                  />
                 </el-tooltip>
                 <el-tooltip v-del-tab-index class="item" effect="dark" content="澶嶅埗" placement="top">
-                  <i :style="{color:$store.state.settings.theme}" class="el-icon-document-copy" style="cursor: pointer;color:#42b983" @click="copy('copy',row)" />
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    class="el-icon-document-copy"
+                    style="cursor: pointer;color:#42b983"
+                    @click="copy('copy',row)"
+                  />
                 </el-tooltip>
               </div>
             </template>
@@ -396,18 +425,155 @@
         </div>
       </span>
     </el-dialog>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="宸ヨ壓璺嚎缁戝畾浜у搧"
+      :visible.sync="routerDialogVisible"
+      width="1200px"
+      :close-on-click-modal="false"
+      top="12vh"
+      class="userDialogVisible"
+      @closed="handleCloseRouter"
+      @close="handleCloseRouter"
+    >
+      <div class="bodyTopFormGroup" style="margin-bottom: 10px">
+        <el-form
+          ref="routerForm"
+          :model="routerForm"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鐗╂枡缂栫爜" style=" display: flex;">
+              <el-input v-model="routerForm.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐗╂枡鍚嶇О" style=" display: flex;">
+              <el-input v-model="routerForm.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐗╂枡瑙勬牸" style=" display: flex;">
+              <el-input v-model="routerForm.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瀛樿揣绫诲瀷" style=" display: flex;">
+              <el-cascader
+                ref="cascader"
+                :options="stocktypeArr"
+                filterable
+                :props="defaultProps"
+                @change="val=>cascaderChange(val)"
+              />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getInventoryFileSelect">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="resetRouter">閲嶇疆</el-button>
+          </div>
+        </el-form>
+      </div>
+
+      <el-table
+        ref="multipleTableRef"
+        :data="routerTableData"
+        border
+        :row-class-name="tableRowClassName"
+        highlight-current-row
+        height="450"
+        :header-cell-style="this.$headerCellStyle"
+        :cell-style="this.$cellStyle"
+        :row-key="getRowKey"
+        @selection-change="handleSelectionChange"
+      >
+
+        <el-table-column
+          type="selection"
+          width="50"
+          :reserve-selection="true"
+          fixed
+        />
+        <!--        <el-table-column-->
+        <!--          prop="RowNum"-->
+        <!--          width="50"-->
+        <!--          label="搴忓彿"-->
+        <!--        />-->
+        <el-table-column
+          prop="partcode"
+          label="浜у搧缂栫爜"
+        />
+        <el-table-column
+          prop="partname"
+          label="浜у搧鍚嶇О"
+        />
+        <el-table-column
+          prop="partspec"
+          label="瑙勬牸鍨嬪彿"
+        >
+          <template slot-scope="{row}">
+            {{ row.partspec?row.partspec:'/' }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="stocktypename"
+          label="瀛樿揣绫诲瀷"
+        >
+          <template slot-scope="{row}">
+            {{ row.stocktypename?row.stocktypename:'/' }}
+          </template>
+        </el-table-column>
+
+      </el-table>
+
+      <!--鍒嗛〉-->
+      <!--      <pagination-->
+      <!--        :total="routerTotal"-->
+      <!--        :page.sync="routerForm.page"-->
+      <!--        :limit.sync="routerForm.rows"-->
+      <!--        align="right"-->
+      <!--        style="margin-top: 10px"-->
+      <!--        layout="total ,prev, pager, next,sizes"-->
+      <!--        popper-class="select_bottom"-->
+      <!--        @pagination="getInventoryFileSelect"-->
+      <!--      />-->
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="routerDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="routerDialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/Pagination'
-import { AddUpdateRoute, DeleteRoute, RouteSearch, StepSelect, ViewRoute } from '@/api/makeModel'
+import {
+  AddUpdateRoute,
+  DeleteRoute,
+  InventoryFileSelect, RouteBatchPartSave,
+  RouteSearch, RputeInventorySearch,
+  StepSelect,
+  StockTypeSelect,
+  ViewRoute
+} from '@/api/makeModel'
 import { validateCode } from '@/utils/global'
 import elDragDialog from '@/directive/el-drag-dialog'
 import waves from '@/directive/waves'
 import TableColumnSettings from '@/components/TableColumnSettings'
 import { WorkShopSelect } from '@/api/deviceManager'
 import { getCookie } from '@/utils/auth'
+import arrayToTree from 'array-to-tree'
 
 export default {
   name: 'GYLX',
@@ -506,9 +672,19 @@
         {
           minWidth: 110,
           width: false,
+          prop: 'isrolepart',
+          label: '鍏宠仈浜у搧',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
           prop: 'lm_user',
           label: '鍒涘缓浜哄憳',
-          id: 9,
+          id: 10,
           show: true,
           fixed: false,
           sortable: true
@@ -518,7 +694,7 @@
           width: false,
           prop: 'lm_date',
           label: '鍒涘缓鏃堕棿',
-          id: 10,
+          id: 11,
           show: true,
           fixed: false,
           sortable: true
@@ -565,19 +741,118 @@
         // Data: [
         //   { required: true, message: '璇疯缃伐鑹�', trigger: ['blur', 'change'] }
         // ]
-      }
+      },
+      routerDialogVisible: false,
+      routerForm: {
+        partcode: '', // 鐗╂枡缂栫爜
+        partname: '', // 鐗╂枡鍚嶇О
+        partspec: '', // 鐗╂枡瑙勬牸
+        stocktypecode: '', // 瀛樿揣绫诲瀷缂栫爜
+        materialtypecode: '', // 鐗╂枡绫诲瀷缂栫爜
+        storehousecode: '' // 鎵�灞炰粨搴撶紪鐮�
+        // prop: 'lm_date', // 鎺掑簭瀛楁
+        // order: 'desc', // 鎺掑簭瀛楁
+        // page: 1, // 绗嚑椤�
+        // rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      routerTableData: [],
+      routerTotal: 10,
+      stocktypeArr: [],
+      defaultProps: {
+        checkStrictly: true,
+        expandTrigger: 'hover',
+        value: 'code',
+        label: 'name'
+      },
+      multipleSelection: [],
+      selectedRouterCode: '',
+      selectedisrolepart: ''
 
     }
   },
   created() {
     this.getRouteSearch()
     this.getWorkShopSelect()
+
+    // this.getInventoryFileSelect()
+    this.getStockTypeSelect()
   },
   mounted() {
     window.addEventListener('resize', this.getHeight)
     this.getHeight()
   },
   methods: {
+    handleCloseRouter() {
+      this.$refs.multipleTableRef.clearSelection()
+    },
+    async getInventoryFileSelect() {
+      const res = await RputeInventorySearch(this.routerForm)
+      this.routerTableData = res.data
+      this.routerTotal = res.count
+
+      this.$nextTick(() => {
+        this.routerTableData.forEach((item, index) => {
+          if (this.selectedisrolepart.split(',').includes(item.partcode)) {
+            this.$refs.multipleTableRef.toggleRowSelection(this.routerTableData[index], true)
+          }
+        })
+      })
+    },
+    async getStockTypeSelect() {
+      const { data: res } = await StockTypeSelect()
+      this.stocktypeArr = arrayToTree(res, {
+        parentProperty: 'iparent_id',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+    },
+    resetRouter() {
+      this.routerForm.partcode = ''
+      this.routerForm.partname = ''
+      this.routerForm.partspec = ''
+      this.routerForm.stocktypecode = ''
+      this.routerForm.materialtypecode = ''
+      this.routerForm.storehousecode = ''
+      this.$refs.cascader.checkedValue = ''
+      this.getInventoryFileSelect()
+    },
+    cascaderChange(val) {
+      this.routerForm.stocktypecode = val[val.length - 1]
+    },
+    routeClick(row) {
+      this.selectedRouterCode = row.code
+      this.selectedisrolepart = row.isrolepart
+      this.routerDialogVisible = true
+
+      this.getInventoryFileSelect()
+    },
+    getRowKey(row) {
+      return row.partcode
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val
+    },
+    routerDialogVisibleCancel() {
+      this.routerDialogVisible = false
+    },
+    async   routerDialogVisibleConfirm() {
+      const data = {
+        'routecode': this.selectedRouterCode,
+        'routepart': this.multipleSelection.length > 0 ? this.multipleSelection.map(i => i.partcode).join(',') : ''
+      }
+
+      this.$store.state.app.buttonIsDisabled = true
+      const res = await RouteBatchPartSave(data)
+      if (res.code === '200') {
+        this.routerDialogVisible = false
+        this.$message.success('缁戝畾鎴愬姛锛�')
+        await this.getRouteSearch()
+        this.$store.state.app.buttonIsDisabled = false
+      } else {
+        this.$message.error('缁戝畾澶辫触锛�')
+      }
+    },
+
     // 鑾峰彇鎵�灞炶溅闂翠笅鎷�
     async getWorkShopSelect() {
       const { data: res } = await WorkShopSelect()
@@ -912,7 +1187,13 @@
       this.$nextTick(() => {
         res[0].Data.forEach((item, index) => {
           this.dynamicTags.push(
-            { seq: item.seq, stepname: item.stepname, stepcode: item.stepcode, editDisabled: true, effect: index === res[0].Data.length - 1 ? 'dark' : 'light' }
+            {
+              seq: item.seq,
+              stepname: item.stepname,
+              stepcode: item.stepcode,
+              editDisabled: true,
+              effect: index === res[0].Data.length - 1 ? 'dark' : 'light'
+            }
           )
           this.routeSelectedArr.push({
             stepcode: item.stepcode,

--
Gitblit v1.9.3