loulijun2021
2022-12-31 b012ab3a1e5495be068c543eb8f0482124db13b5
src/views/zzmx/gylx.vue
@@ -29,15 +29,20 @@
              <el-input v-model="form.createuser" style="width: 200px" placeholder="请输入" />
            </el-form-item>
          </div>
          <div style="display: flex;align-items: start;margin-top: 5px;z-index: 2">
          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'10%'}">
            <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        />
      </div>
      <div class="elTableDiv">
        <el-table
          ref="tableDataRef"
          class="tableFixed"
          :data="tableData"
          :height="tableHeight"
          border
@@ -61,10 +66,12 @@
          <el-table-column
            prop="code"
            label="编码"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="name"
            show-tooltip-when-overflow
            label="名称"
            sortable="custom"
          />
@@ -72,6 +79,7 @@
            prop="description"
            label="工艺路线描述"
            sortable="custom"
            show-tooltip-when-overflow
          >
            <template slot-scope="{row}">
              <div v-if="row.description">{{ row.description }}</div>
@@ -80,28 +88,31 @@
          </el-table-column>
          <el-table-column
            prop="enable"
            show-tooltip-when-overflow
            label="使用状态"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.enable==='Y'">
                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                是
              </div>
              <div v-if="row.enable==='N'">
                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
                <i class="el-icon-info" style="margin-right: 2px" />
                否
              </div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            show-tooltip-when-overflow
            label="创建人员"
            sortable="custom"
          />
          <el-table-column
            prop="lm_date"
            label="创建时间"
            show-tooltip-when-overflow
            sortable="custom"
            width="160"
          />
@@ -115,12 +126,16 @@
                <el-tooltip class="item" effect="dark" content="预览" placement="top">
                  <i
                    class="el-icon-view"
                    style="margin-right:15px;cursor: pointer;color:#42b983  "
                    :style="{color:$store.state.settings.theme}"
                    style="margin-right:15px;cursor: pointer;"
                    @click="edit('edit',row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="删除" placement="top">
                  <i class="el-icon-delete" @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)" />
                </el-tooltip>
              </div>
            </template>
@@ -140,7 +155,7 @@
    </div>
    <el-dialog
      :title="operation==='add'?'新增':'预览'"
      :title="operation==='add'?'新增':(operation==='edit'?'预览':'复制')"
      :visible.sync="dialogVisible"
      width="1000px"
      :close-on-click-modal="false"
@@ -151,7 +166,7 @@
      <el-form ref="dialogForm" style="height: 500px" :rules="dialogFormRules" :model="dialogForm" label-width="110px">
        <div style="display: flex">
          <el-form-item label="工艺路线编码" prop="code" style="margin-right: 20px">
            <el-input v-model="dialogForm.code" :disabled="operation!=='add'" style="width: 220px" />
            <el-input v-model="dialogForm.code" :disabled="operation==='edit'" style="width: 220px" />
          </el-form-item>
          <el-form-item label="工艺名称" prop="name">
            <el-input v-model="dialogForm.name" :disabled="operation==='edit'" style="width: 220px" />
@@ -247,9 +262,11 @@
                  :debounce="300"
                  :popper-append-to-body="false"
                  popper-class="autocompleteClass"
                  @select="handleSelect"
                  @select="val=>handleSelect(val,tag)"
                  @keyup.enter.native="handleInputConfirm(tag)"
                />
                <!--                @keyup.enter.native="handleInputConfirm(tag)"-->
                <!--        @blur="handleBlur2"-->
                <div
                  v-if="index!==dynamicTags.length-1"
@@ -275,7 +292,13 @@
        <div class="footerButton">
          <el-button v-if="operation==='edit'" @click="dialogVisibleCancel">返 回</el-button>
          <el-button v-if="operation!=='edit'" @click="dialogVisibleCancel">取 消</el-button>
          <el-button v-if="operation!=='edit'" type="primary" @click="dialogVisibleConfirm">确 定</el-button>
          <el-button
            v-if="operation!=='edit'"
            type="primary"
            :loading="$store.state.app.buttonIsDisabled"
            :disabled="$store.state.app.buttonIsDisabled"
            @click="dialogVisibleConfirm"
          >确 定</el-button>
        </div>
      </span>
    </el-dialog>
@@ -285,25 +308,14 @@
<script>
import Pagination from '@/components/Pagination'
import { AddUpdateRoute, DeleteRoute, RouteSearch, StepSelect, ViewRoute } from '@/api/zzmx'
import { validateCode } from '@/utils/global'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
  name: 'GYLX',
  components: {
    Pagination
  },
  data() {
    const validateName = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请输入编码'))
      } else {
        if (SER_HZ.test(value)) {
          return callback(new Error('编码不能为中文'))
        } else {
          callback()
        }
      }
    }
    return {
      isIpad: false,
      mainHeight: 0,
@@ -344,12 +356,12 @@
      routeArr: [], // 工艺设置下拉所有值
      routeSelectedArr: [], // 工艺设置下拉已选的值
      addDisabled: true, // 添加按钮是否可点击
      editDisabled: true, // 修改按钮是否可点击
      // editDisabled: true, // 修改按钮是否可点击
      mouseFocusPosition: 0, // 鼠标聚焦的位置
      operation: '',
      dialogFormRules: {
        code: [
          { required: true, validator: validateName, trigger: ['blur', 'change'] }
          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
        ],
        name: [
          { required: true, message: '请输入名称', trigger: ['blur', 'change'] }
@@ -394,10 +406,11 @@
      this.routeArr = res
    },
    // 处理下拉选择
    handleSelect(item) {
    handleSelect(item, tag) {
      this.autocompleteValue = item.value
      this.$nextTick(_ => {
        this.$refs['saveTagInput' + this.mouseFocusPosition][0].focus()
        this.handleInputConfirm(tag)
      })
    },
    // 输入框确认事件
@@ -441,6 +454,7 @@
            stepname: item.stepname,
            value: item.value
          })
          console.log(this.routeSelectedArr, 7)
          this.routeArr.splice(index, 1)
        }
      })
@@ -682,6 +696,43 @@
        this.$message.info('已取消删除')
      })
    },
    // 复制按钮
    async copy(operation, row) {
      this.operation = operation
      this.dialogVisible = true
      await this.getStepSelectArr()
      const { data: res } = await ViewRoute({ routecode: row.code })
      // 待改
      this.dynamicTags = []
      this.routeSelectedArr = []
      this.$nextTick(() => {
        this.dialogForm.code = res[0].code
        this.dialogForm.name = res[0].name
        this.dialogForm.enable = res[0].enable
        this.dialogForm.description = res[0].description
        // this.dialogForm.Data = row.description
        res[0].Data.forEach(item => {
          this.dynamicTags.push(
            { seq: item.seq, stepname: item.stepname, stepcode: item.stepcode, editDisabled: true, effect: 'light' }
          )
          this.routeSelectedArr.push({
            stepcode: item.stepcode,
            stepname: item.stepname,
            value: item.stepname
          })
          console.log(item, 2)
          console.log(this.routeArr)
          this.routeArr = this.routeArr.filter(i => i.stepcode !== item.stepcode)
        })
        this.addDisabled = false
        // { editDisabled: true, stepcode: '', seq: 1, stepname: ' ', effect: 'light' }
      })
    },
    // 对话框关闭事件
    handleClose() {
      this.dialogForm.code = ''
@@ -706,11 +757,13 @@
      if (this.dynamicTags[0].stepname.trim() === '') {
        return this.$message.info('工艺设置第一项不能为空!')
      }
      console.log(this.routeSelectedArr, 3666666)
      console.log(this.dynamicTags, 3)
      const Data = []
      this.dynamicTags.forEach(item => {
        Data.push({ seq: item.seq, stepcode: this.routeSelectedArr.find(it => it.stepname === item.stepname).stepcode, stepname: item.stepname })
        Data.push({
          seq: item.seq,
          stepcode: this.routeSelectedArr.find(it => it.stepname === item.stepname).stepcode,
          stepname: item.stepname
        })
      })
      Data.forEach(item => {
@@ -718,9 +771,10 @@
          item.stepcode = this.routeSelectedArr.find(it => it.stepname === item.stepname).stepcode
        }
      })
      console.log(Data, 32)
      this.$refs.dialogForm.validate(valid => {
        if (valid) {
          this.$store.state.app.buttonIsDisabled = true
          const data = {
            code: this.dialogForm.code,
            name: this.dialogForm.name,
@@ -728,14 +782,15 @@
            description: this.dialogForm.description,
            Data: Data
          }
          console.log(data, 2)
          AddUpdateRoute(this.dialogForm.id, this.operation === 'add' ? 'Add' : 'Update', data).then(res => {
          AddUpdateRoute(this.dialogForm.id, this.operation === 'edit' ? 'Update' : 'Add', data).then(res => {
            if (res.code === '200') {
              this.$message.success(this.operation === 'add' ? '添加成功!' : '修改成功!')
              this.dialogVisible = false
              this.$message.success(this.operation === 'add' ? '添加成功!' : '复制成功!')
              this.getRouteSearch()
              this.$store.state.app.buttonIsDisabled = false
            } else {
              this.$message.error(this.operation === 'add' ? '添加失败!' : '修改失败!')
              this.$message.error(this.operation === 'add' ? '添加失败!' : '复制失败!')
            }
          })
        }
@@ -745,11 +800,12 @@
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 200
        this.tableHeight = this.mainHeight - 195
        if (window.innerHeight < 769) {
          this.tableHeight = this.tableHeight - 40
        }
        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
        this.$refs.tableDataRef.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
@@ -968,6 +1024,16 @@
  margin-bottom: 0;
}
.tableFixed {
  ::v-deep .el-table__fixed-right {
    height: 100% !important;
  }
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
</style>
<style>