1
lzhe
2024-09-30 1988d77f4df3c01a9137303e0c959b3442c14377
src/views/console/workstation/index.vue
@@ -7,11 +7,10 @@
                  <el-aside width="200px" v-loading="showGrouploading">
                     <el-container>
                        <el-main class="nopadding">
                           <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"
                              :default-expanded-keys="[1]" :render-content="renderContent"
                              @node-click="groupClick1"></el-tree>
                           <el-tree :expand-on-click-node="false" ref="group" class="menu" node-key="id"
                              :data="group" :current-node-key="treeCheckKey" :highlight-current="true"
                              :check-on-click-node="true" :default-expanded-keys="[1]"
                              :render-content="renderContent" @node-click="groupClick1"></el-tree>
                        </el-main>
                     </el-container>
                  </el-aside>
@@ -26,12 +25,12 @@
                        <div class="right-panel">
                           <div class="right-panel-search">
                              <span>类型</span>
                              <el-select v-model="type" style="width: 240px">
                              <el-select v-model="type" style="width: 240px" clearable>
                                 <el-option v-for="item in types" :key="item.value" :label="item.label"
                                    :value="item.value" />
                              </el-select>
                              <span>状态</span>
                              <el-select v-model="statu" style="width: 240px">
                              <el-select v-model="statu" style="width: 240px" clearable>
                                 <el-option v-for="item in status" :key="item.value" :label="item.label"
                                    :value="item.value" />
                              </el-select>
@@ -45,16 +44,16 @@
                        <div style="display: flex">
                           <scTable highlight-current-row @dataChange="dataChange" @row-click="rowClick"
                              ref="table" :params="params" :apiObj="apiObj"
                              @selection-change="selectionChange" stripe>
                              @selection-change="selectionChange" stripe v-show="showTable">
                              <el-table-column type="selection" width="50"></el-table-column>
                              <el-table-column label="工位编号" prop="code" width="120"
                                 sortable='custom'></el-table-column>
                              <el-table-column label="工位名称" prop="name" width="120"
                                 sortable='custom'></el-table-column>
                              <el-table-column label="工位类型" prop="type" width="120"
                                 sortable='custom'></el-table-column>
                              <el-table-column label="工位日历" prop="calendarName" width="120"
                                 sortable='custom'></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">
                                 <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">
                                    <el-button-group>
@@ -76,12 +75,22 @@
                                 </template>
                              </el-table-column>
                           </scTable>
                           <div style="margin-left: 14px" 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;">
                                    <el-icon-arrow-left v-show="showTable" />
                                    <el-icon-arrow-right v-show="!showTable" />
                                 </el-icon>
                                 <p class="preview-title">工位信息</p>
                                 <div class="preview-content">
                                    <div class="img">
                                       <img :src="machinePng" alt="">
                                       <img v-if="!previewData.avatar" :src="machinePng" alt="">
                                       <scUpload v-else disabled v-model="previewData.avatar" title="工位图片">
                                       </scUpload>
                                    </div>
                                    <ul>
                                       <li>工位编号 {{ previewData.code }}</li>
@@ -96,7 +105,9 @@
                                 <el-tabs tab-position="top" class="custom-tabs" v-model="normal">
                                    <el-tab-pane label="机器信息" name="1">
                                       <el-container>
                                          <el-header>基础数据</el-header>
                                          <el-header>
                                             <h2>基础数据</h2>
                                          </el-header>
                                          <el-main>
                                             <el-row>
                                                <el-col :span="4">
@@ -117,61 +128,85 @@
                                                <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>
                                             <span>采集信息</span>
                                             <el-button  @click="editFlag = !editFlag" style="margin-left: auto;" text type="primary" size="small">配置工位采集</el-button>
                                             <el-button v-show="editFlag" @click="saveInfo" text type="primary" size="small">保存</el-button>
                                             <el-button text type="primary" size="small">修改DMP配置</el-button>
                                             <h2>采集信息</h2>
                                             <el-button v-show="list.length > 0"
                                                @click="() => { editFlag = !editFlag; showTable = !editFlag }"
                                                style="margin-left: auto;" text type="primary"
                                                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> -->
                                          </el-header>
                                          <el-main>
                                             <el-table :data="list" height="200px">
                                                <el-table-column label="采集变量名称" prop="name" />
                                                <el-table-column label="工位变量名称" prop="dataItem">
                                             <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>
                                                      <el-input :disabled="!editFlag"
                                                         v-model="scope.row.dataItem"></el-input>
                                                   </template>
                                                </el-table-column>
                                                <el-table-column label="数据标签" prop="description">
                                                <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 :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">
                                                <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 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"  />
                                                      <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"  />
                                                      <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"  />
                                                      <el-checkbox :disabled="!editFlag"
                                                         v-model="scope.row.processParameter" />
                                                   </template>
                                                </el-table-column>
                                             </el-table>
@@ -210,7 +245,7 @@
                                          <el-col :span="8">
                                             <ul class="workbench">
                                                <li v-for="item in workbenchVOList" :key="item.sort">
                                                   {{`【${item.sort}】`}}{{item.name}}
                                                   {{ `【${item.sort}】` }}{{ item.name }}
                                                </li>
                                             </ul>
                                          </el-col>
@@ -371,6 +406,7 @@
   },
   data() {
      return {
         showTable: true,
         machinePng,
         showGrouploading: false,
         options: [],
@@ -475,6 +511,31 @@
      this.queryList()
   },
   methods: {
      handleSelectionChange(val) {
         console.log(val)
         val.forEach(v => {
            v.bigScreen = true
            v.realTimeData = true
            v.processParameter = true
         })
         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
            }
         })
      },
      editDMP() {
         this.$HTTP.get(`/api/blade-system/param/detail?paramKey=system.dmp.url`).then(res => {
            if (res.success) {
               window.open(res.data.paramValue)
            } else {
               this.$message.error(res.msg)
            }
         })
      },
      renderContent(h, { data }) {
         let img = data.groupTag == 'fms_beltline'
         return h('span', {
@@ -512,15 +573,18 @@
               let data = this.formatData(res.data)
               this.group = data
               this.showGrouploading = false
               console.log('>>>>>>>>>>>>>>>>>>>>>')
               // 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)
               }
               // })
@@ -596,6 +660,10 @@
            Object.keys(this.basic).forEach(key => {
               this.basic[key] = '-'
            })
            Object.keys(this.info).forEach(key => {
               this.info[key] = '-'
            })
            this.list = []
            this.workbenchVOList = []
            return
         }
@@ -655,9 +723,10 @@
            this.search()
         })
      },
      saveInfo () {
         this.$HTTP.post('/api/blade-cps/workstation-wcs/save',this.workbenchVOList).then(res => {
      saveInfo() {
         this.$HTTP.post('/api/blade-cps/workstation-wcs/save', this.workbenchVOList).then(res => {
            this.editFlag = false
            this.showTable = true
         })
      },
   }
@@ -697,6 +766,7 @@
      }
   }
}
.workbench {
   list-style: none;
}