gaoshp
2024-11-03 dcc4992bd51e9ee4a97099cd3a15085f7e247f23
src/views/console/workstation/index.vue
@@ -48,7 +48,11 @@
                              <el-table-column type="selection" width="50"></el-table-column>
                              <el-table-column label="工位编号" prop="code" width="120"></el-table-column>
                              <el-table-column label="工位名称" prop="name" width="120"></el-table-column>
                              <el-table-column label="工位类型" prop="type" width="120"></el-table-column>
                              <el-table-column label="工位类型" prop="type" width="120">
                                 <template #default="scope">
                                    <span>{{ scope.row.type == '0' ? '机器' : '人工' }}</span>
                                 </template>
                              </el-table-column>
                              <el-table-column label="工位日历" prop="calendarName" width="120"></el-table-column>
                              <el-table-column label="操作" fixed="right" align="right" width="160">
                                 <template #default="scope">
@@ -71,8 +75,10 @@
                                 </template>
                              </el-table-column>
                           </scTable>
                           <div style="margin-left: 14px;flex: 1 1 auto;"
                              v-if="Object.keys(previewData).length > 0">
                           <div :style="{
                              'max-width': showTable ? '50%' : '100%', 'margin-left': '14px',
                              flex: '1 1 auto'
                           }" v-if="Object.keys(previewData).length > 0">
                              <div class="header">
                                 <el-icon @click="showTable = !showTable"
                                    style="font-size: 20px;cursor: pointer;margin-top: 10px;">
@@ -82,7 +88,8 @@
                                 <p class="preview-title">工位信息</p>
                                 <div class="preview-content">
                                    <div class="img">
                                       <img v-if="!previewData.avatar" :src="machinePng" alt="">
                                       <img style="width: 148px;height: 148px;" v-if="!previewData.avatar"
                                          :src="machinePng" alt="">
                                       <scUpload v-else disabled v-model="previewData.avatar" title="工位图片">
                                       </scUpload>
                                    </div>
@@ -122,87 +129,37 @@
                                                <el-col :span="8">
                                                   {{ basic.machineBrand }}
                                                </el-col>
                                                <el-col :span="4">
                                                <!-- <el-col :span="4">
                                                   驱动名称
                                                </el-col>
                                                <el-col :span="8">
                                                   {{ basic.typeName }}
                                                </el-col>
                                                </el-col> -->
                                             </el-row>
                                          </el-main>
                                       </el-container>
                                       <el-container>
                                          <el-header>
                                          <el-header style="justify-content: flex-start;">
                                             <h2>采集信息</h2>
                                             <el-button v-show="list.length > 0"
                                                @click="() => { editFlag = !editFlag; }"
                                             <!-- <el-button v-show="list.length > 0"
                                                @click="() => { editFlag = !editFlag; showTable = !editFlag }"
                                                style="margin-left: auto;" text type="primary"
                                                size="small">配置工位采集</el-button>
                                                size="small">{{ editFlag ? '取消' : '配置工位采集'
                                                }}</el-button>
                                             <el-button v-show="editFlag" @click="saveInfo" text
                                                type="primary" size="small">保存</el-button>
                                             <el-button text type="primary" size="small"
                                                @click="editDMP">修改DMP配置</el-button>
                                                type="primary" size="small">保存</el-button> -->
                                             <!-- <el-button text type="primary" size="small"
                                                @click="editDMP">修改DMP配置</el-button> -->
                                             <el-button @click="getExport" style="margin-left: 12px" text
                                                type="primary" size="small">导出</el-button>
                                             <el-button @click="editCollection" text type="primary"
                                                style="margin-left: 0px;" size="small">数据点编辑</el-button>
                                          </el-header>
                                          <el-main>
                                             <el-table :data="list" height="200px"
                                                @selection-change="handleSelectionChange">
                                                <el-table-column type="selection" width="55"
                                                   v-if="editFlag" />
                                                <el-table-column label="采集变量名称" prop="name"
                                                   width="120" />
                                                <el-table-column label="工位变量名称" prop="dataItem"
                                                   width="120">
                                                   <template #default="scope">
                                                      <el-input :disabled="!editFlag"
                                                         v-model="scope.row.dataItem"></el-input>
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="数据标签" prop="description"
                                                   width="150">
                                                   <template #default="scope">
                                                      <el-select :disabled="!editFlag"
                                                         v-model="scope.row.description">
                                                         <el-option
                                                            v-for="item in workstation_param_type"
                                                            :key="item.dictKey"
                                                            :label="item.dictValue"
                                                            :value="item.dictKey - 0" />
                                                      </el-select>
                                                      <!-- {{ dmp_data_type.find(v => v.dictKey == scope.row.wcsDataType)?.dictValue }} -->
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="数据类别" prop="wcsDataType"
                                                   width="150">
                                                   <template #default="scope">
                                                      <el-select disabled
                                                         v-model="scope.row.wcsDataType">
                                                         <el-option v-for="item in dmp_data_type"
                                                            :key="item.dictKey"
                                                            :label="item.dictValue"
                                                            :value="item.dictKey - 0" />
                                                      </el-select>
                                                      <!-- {{ dmp_data_type.find(v => v.dictKey == scope.row.wcsDataType)?.dictValue }} -->
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="大屏" prop="bigScreen">
                                                   <template #default="scope">
                                                      <el-checkbox :disabled="!editFlag"
                                                         v-model="scope.row.bigScreen" />
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="实时数据" prop="realTimeData">
                                                   <template #default="scope">
                                                      <el-checkbox :disabled="!editFlag"
                                                         v-model="scope.row.realTimeData" />
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="过程参数" prop="processParameter">
                                                   <template #default="scope">
                                                      <el-checkbox :disabled="!editFlag"
                                                         v-model="scope.row.processParameter" />
                                                   </template>
                                                </el-table-column>
                                             </el-table>
                                             <!-- <el-table :data="list" height="200px">
                                             </el-table> -->
                                             <CollTable ref="collTable" :info="previewData"></CollTable>
                                          </el-main>
                                       </el-container>
                                    </el-tab-pane>
@@ -220,7 +177,7 @@
                                          <el-col :span="8">
                                             {{ info.properties }}
                                          </el-col>
                                          <el-col :span="4">
                                          <!-- <el-col :span="4">
                                             程序传输方式
                                          </el-col>
                                          <el-col :span="8">
@@ -234,7 +191,7 @@
                                          </el-col>
                                          <el-col :span="4">
                                             工作台
                                          </el-col>
                                          </el-col> -->
                                          <el-col :span="8">
                                             <ul class="workbench">
                                                <li v-for="item in workbenchVOList" :key="item.sort">
@@ -258,7 +215,7 @@
               <el-container>
                  <el-aside width="200px" v-loading="showGrouploading">
                     <el-container>
                        <el-main class="nopadding">
                        <el-main class="nopadding" style="overflow: hidden;">
                           <el-tree ref="group" class="menu" node-key="id" :data="group"
                              :current-node-key="treeCheckKey" :highlight-current="true"
                              :expand-on-click-node="false" :check-on-click-node="true"
@@ -317,9 +274,16 @@
                     <el-header v-show="!addGroupShow">
                        <div class="left-panel">
                           <el-button @click="addChild" type="primary" plain>新增下级</el-button>
                           <el-button @click="deleteWorkGroup"
                           <el-popconfirm width="220" cancel-button-text="取消" confirm-button-text="删除"
                              title="删除会将工位组下的工位移动到默认组中,请确认是否删除?" @confirm="deleteWorkGroup">
                              <template #reference>
                                 <el-button v-show="!['1', '101'].includes(treeCheckedNode.id)" type="danger"
                                    plain>删除</el-button>
                              </template>
                           </el-popconfirm>
                           <!-- <el-button @click="deleteWorkGroup"
                              v-show="!['1', '101'].includes(treeCheckedNode.id)" type="danger"
                              plain>删除</el-button>
                              plain>删除</el-button> -->
                        </div>
                     </el-header>
                     <el-main class="" v-show="!addGroupShow">
@@ -385,17 +349,22 @@
         </el-tabs>
      </el-card>
      <Dialog ref="dialog" @success="success" :option="{ types, status, group }"></Dialog>
      <CollDialog ref="CollDialog" @success="successColl" :option="{ previewData }"></CollDialog>
   </el-main>
</template>
<script>
import pmsPng from '@/assets/pms.png'
import Dialog from './Dialog.vue'
import machinePng from '@/assets/machine.png'
import CollDialog from './CollDialog.vue'
import CollTable from './CollTable.vue'
import machinePng from '@/assets/machine1.jpg'
export default {
   name: 'system',
   components: {
      Dialog
      Dialog,
      CollDialog,
      CollTable
   },
   data() {
      return {
@@ -475,7 +444,6 @@
         handler(val) {
            this.queryList().then(() => {
               if (val == 1) {
                  console.log('>>>>>>>>>>>>>>', this.treeCheckedNode)
                  this.apiObj = this.$API.workstation.getList
                  this.params = {
                     groupId: this.treeCheckedNode.id,
@@ -504,8 +472,24 @@
      this.queryList()
   },
   methods: {
      // 数据点导出
      getExport() {
         this.$HTTP.get(`/api/smis/workstation/export-dp?` + this.$TOOL.qsStringify({
            workstationId: this.previewData.id
         })).then(res => {
            if (res.code == 200) {
               window.open(res.data.link)
            }
         })
      },
      // 数据点编辑
      editCollection() {
         this.$refs.CollDialog.open('edit', this.previewData)
      },
      successColl() {
         this.$refs.collTable.refresh()
      },
      handleSelectionChange(val) {
         console.log(val)
         val.forEach(v => {
            v.bigScreen = true
            v.realTimeData = true
@@ -513,7 +497,6 @@
         })
         this.list.forEach(v => {
            if (val.filter(item => v.id === item.id).length == 0) {
               console.log(v)
               v.bigScreen = false
               v.realTimeData = false
               v.processParameter = false
@@ -568,13 +551,15 @@
               this.showGrouploading = false
               // this.$nextTick(() => {
               if (!flag) {
                  debugger
                  let parent = res.data.filter(item => item.parentId == 0)[0]
                  this.treeCheckedNode = parent
                  this.treeCheckKey = parent.id
               } else {
                  let parent = res.data.filter(item => item.id == this.treeCheckedNode.id)[0]
                  this.treeCheckedNode = parent
                  this.treeCheckKey = parent.id
                  debugger
                  let parent = res.data.filter(item => item.parentId == 0)[0]
                  parent && (this.treeCheckedNode = parent)
                  parent && (this.treeCheckKey = parent.id)
               }
               // })
@@ -616,13 +601,11 @@
               groupCategory: this.treeCheckedNode.groupCategory
            }, this.form)
            return this.$API.workstation.saveWorkstationGroup.post(data).then(res => {
               console.log(res)
               this.queryList(true)
            })
         }
         let data = Object.assign({}, this.treeCheckedNode, this.form)
         this.$API.workstation.saveWorkstationGroup.put(data).then(res => {
            console.log(res)
            this.queryList(true)
         })
      },
@@ -645,7 +628,6 @@
      },
      rowClick(data) {
         this.previewData = data
         console.log(data, '>>>>>>>>>>>')
         if (!data.id) {
            Object.keys(this.basic).forEach(key => {
               this.basic[key] = '-'
@@ -657,21 +639,29 @@
            this.workbenchVOList = []
            return
         }
         this.$HTTP.get(`/api/blade-cps/workstation/listDmpVariablesByWorkstationId?workstationId=${data.id}`).then(res => {
            this.list = res?.data?.dmpVariablesVOList
            Object.keys(this.basic).forEach(key => {
               this.basic[key] = res?.data?.[key] || '-'
            })
         })
         this.$HTTP.get(`/api/blade-cps/workstation-workbench/listWorkbench?workstationId=${data.id}`).then(res => {
            Object.keys(this.info).forEach(key => {
               this.info[key] = res?.data?.[key] || '-'
            })
            this.workbenchVOList = res?.data?.workstationList || []
         })
         console.log(data, '>>>>>>>>>>>')
         // data.machineId && this.$HTTP.get(`/api/smis/workstation/listDmpVariablesByMachineId?machineId=${data.machineId}`).then(res => {
         //    this.list = res?.data
         //    // Object.keys(this.basic).forEach(key => {
         //    //    this.basic[key] = res?.data?.[key] || '-'
         //    // })
         // })
         // this.$HTTP.get(`/api/smis/workstation/listDmpVariablesByWorkstationId?workstationId=${data.id}`).then(res => {
         //    // this.list = res?.data?.dmpVariablesVOList
         //    Object.keys(this.basic).forEach(key => {
         //       this.basic[key] = res?.data?.[key] || '-'
         //    })
         // })
         // this.$HTTP.get(`/api/smis/workstation-workbench/listWorkbench?workstationId=${data.id}`).then(res => {
         //    Object.keys(this.info).forEach(key => {
         //       this.info[key] = res?.data?.[key] || '-'
         //    })
         //    this.workbenchVOList = res?.data?.workstationList || []
         // })
      },
      groupClick1(data) {
         console.log('-------', data)
         var params = {
            groupId: data.id,
            keyWord: this.keyWord,
@@ -684,7 +674,6 @@
      dataChange(res, data) {
         if (data.length > 0) {
            console.log(data[0], '>>>>>>>>')
            this.$refs.table.setCurrentRow(data[0])
            this.previewData = data[0]
            this.rowClick(data[0])
@@ -701,7 +690,7 @@
         this.$refs.dialog.open('edit', row)
      },
      table_del(row, index, type) {
         this.$HTTP.delete(`/api/blade-cps/workstation?type=0&workstationIds=${row.id}`).then(res => {
         this.$HTTP.delete(`/api/smis/workstation?type=0&workstationIds=${row.id}`).then(res => {
            this.search()
         })
      },
@@ -709,13 +698,14 @@
         this.selection = selection
      },
      batchDel() {
         this.$HTTP.delete(`/api/blade-cps/workstation?type=0&workstationIds=${this.selection.map(item => item.id).join(',')}`).then(res => {
         this.$HTTP.delete(`/api/smis/workstation?type=0&workstationIds=${this.selection.map(item => item.id).join(',')}`).then(res => {
            this.search()
         })
      },
      saveInfo() {
         this.$HTTP.post('/api/blade-cps/workstation-wcs/save', this.workbenchVOList).then(res => {
         this.$HTTP.post('/api/smis/workstation-wcs/save', this.workbenchVOList).then(res => {
            this.editFlag = false
            this.showTable = true
         })
      },
   }