loulijun2021
2023-11-02 e20c8cf7ad6d2a85817c5627fc9ee7c755884d5b
src/views/mouldManager/mouldList.vue
@@ -3,8 +3,15 @@
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup" style="justify-content: space-between">
        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button
          v-waves
          type="success"
          icon="el-icon-download"
          @click="$router.push('./../systemSetting/dataImport?fileCode=12')"
        >导入
        </el-button>
        <!--        <el-button v-waves type="primary" icon="el-icon-download" @click="download">导出</el-button>-->
        <!--        <el-button v-waves icon="el-icon-download" @click="upload">导入</el-button>-->
      </div>
      <div class="bodyTopFormGroup">
@@ -27,7 +34,7 @@
              </el-select>
            </el-form-item>
            <el-form-item label="使用状态" style=" display: flex;">
              <el-select v-model="form.onstate" style="width: 200px" placeholder="请选择">
              <el-select v-model="form.usestatus" style="width: 200px" placeholder="请选择">
                <el-option
                  v-for="item in onstateArr"
                  :key="item.code"
@@ -118,16 +125,18 @@
            sortable="custom"
          >
            <template slot-scope="{row}">
              {{ row.status === 'Y' ? '正常' : '故障' }}
              <el-tag v-if="row.status==='Y'" size="small" type="success">正常</el-tag>
              <el-tag v-if="row.status==='N'" size="small" type="danger">故障</el-tag>
            </template>
          </el-table-column>
          <el-table-column
            prop="onstate"
            prop="usestatus"
            label="使用状态"
            sortable="custom"
          >
            <template slot-scope="{row}">
              {{ onstateArr.find(i => parseFloat(i.code) === parseFloat(row.usestaus)).name }}
              {{ row.usestatus?onstateArr.find(i => parseFloat(i.code) === parseFloat(row.usestatus)).name:'/' }}
              <!--              {{ onstateArr.find(i => parseFloat(i.code) === parseFloat(row.usestatus)).name }}-->
            </template>
          </el-table-column>
          <el-table-column
@@ -144,27 +153,57 @@
            prop="spec"
            label="规格型号"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              {{ row.spec ? row.spec : '/' }}
            </template>
          </el-table-column>
          <el-table-column
            prop="warehousename"
            label="仓库名称"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              {{ row.warehousename ? row.warehousename : '/' }}
            </template>
          </el-table-column>
          <el-table-column
            prop="surp_life"
            label="预计寿命"
            prop="location_name"
            label="库位名称"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              {{ row.location_name ? row.location_name : '/' }}
            </template>
          </el-table-column>
          <el-table-column
            prop="is_part"
            label="产品关联"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <el-tag v-if="row.is_part==='Y'" size="small" type="success">是</el-tag>
              <el-tag v-if="row.is_part==='N'" size="small" type="danger">否</el-tag>
              <!--              <el-tag v-if="row.is_part==='Y'" size="small" type="success">是</el-tag>-->
              <!--              <el-tag v-if="row.is_part==='N'" size="small" type="danger">否</el-tag>-->
              <i
                v-if="row.is_part==='Y'"
                :style="{color:$store.state.settings.theme}"
                class="el-icon-share"
                style="cursor: pointer"
                @click="connectClick(row)"
              />
              <i
                v-if="row.is_part==='N'"
                class="el-icon-share"
                style="color: rgb(180 ,181, 185);cursor:pointer;"
                @click="connectClick(row)"
              />
            </template>
          </el-table-column>
          <el-table-column
            prop="surp_life"
            label="预计寿命"
            sortable="custom"
          />
          <el-table-column
            prop="serlife"
            label="使用寿命"
@@ -203,7 +242,7 @@
                  <i
                    class="el-icon-edit-outline"
                    :style="{color:$store.state.settings.theme}"
                    @click="edit('edit',row)"
                    @click="edit(row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="删除" placement="top">
@@ -228,17 +267,25 @@
    <el-dialog
      v-el-drag-dialog
      :title="operation==='add'?'新增':'编辑'"
      :title="operation==='add'?'新增':(operation==='edit'?'编辑':'产品关联')"
      :visible.sync="dialogVisible"
      width="800px"
      :close-on-click-modal="false"
      top="7vh"
      :top="operation!=='connect'? '7vh':'15vh'"
      class="dialogFormClass"
      @closed="handleClose"
      @close="handleClose"
    >
      <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
      <el-form
        v-if="operation!=='connect'"
        ref="dialogForm"
        class=""
        inline
        :rules="dialogFormRules"
        :model="dialogForm"
        label-width="110px"
      >
        <el-divider content-position="left">基本信息</el-divider>
        <el-form-item label="模具编码" prop="mouldcode">
          <el-input v-model="dialogForm.mouldcode" :disabled="operation!=='add'" style="width: 200px" />
@@ -250,38 +297,39 @@
          <el-input v-model="dialogForm.mouldspec" style="width: 200px" />
        </el-form-item>
        <el-form-item label="仓库信息" prop="warehousecode">
          <el-select
            v-model="dialogForm.warehousecode"
            style="width:200px"
            placeholder="请选择"
            filterable
            :popper-append-to-body="false"
          >
            <el-option
              v-for="item in wareHouseArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="预计寿命">
          <el-input v-model="dialogForm.surplife" style="width: 200px" />
        </el-form-item>
        <el-form-item label="剩余寿命">
          <el-input v-model="dialogForm.resilife" style="width: 200px" />
        </el-form-item>
        <el-form-item required label="使用状态">
        <el-form-item required label="模具状态">
          <el-radio-group v-model="dialogForm.status">
            <el-radio label="Y">正常</el-radio>
            <el-radio label="N">故障</el-radio>
          </el-radio-group>
        </el-form-item>
        <!--        <el-form-item label="仓库信息" prop="warehousecode">-->
        <!--          <el-select-->
        <!--            v-model="dialogForm.warehousecode"-->
        <!--            style="width:200px"-->
        <!--            placeholder="请选择"-->
        <!--            filterable-->
        <!--            :popper-append-to-body="false"-->
        <!--          >-->
        <!--            <el-option-->
        <!--              v-for="item in wareHouseArr"-->
        <!--              :key="item.code"-->
        <!--              :label="item.name"-->
        <!--              :value="item.code"-->
        <!--            />-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <el-form-item label="预计寿命">
          <el-input v-model="dialogForm.surplife" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
        </el-form-item>
        <el-form-item label="剩余寿命">
          <el-input v-model="dialogForm.resilife" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
        </el-form-item>
      </el-form>
      <el-divider content-position="left">关联产品</el-divider>
      <el-divider v-if="operation!=='connect'" content-position="left">关联产品</el-divider>
      <el-input
        v-model="filterText"
@@ -327,9 +375,10 @@
  ProductionScheduleReportExcelSearch,
  ProductionScheduleReportSearch
} from '@/api/ReportManager'
import { MouldMangerSearch } from '@/api/MouldManager'
import { AddUpdateMouldManger, DeleteMouldManger, MouldMangerSearch } from '@/api/MouldManager'
import { InventoryTreePermissions, WareHouse } from '@/api/GeneralBasicData'
import arrayToTree from 'array-to-tree'
import { TCunstomerDelete } from '@/api/basicSettings'
export default {
  name: 'Zzjg',
@@ -345,14 +394,14 @@
      tableHeight: 0,
      form: {
        mouldstaus: '', // 模具状态
        onstate: '', // 使用状态
        usestatus: '', // 使用状态
        mouldcode: '', // 模具编码
        mouldname: '', // 模具名称
        mouldspec: '', // 模具规格型号
        createuser: '', // 创建人员
        createdate: '', // 单据日期
        prop: 'code', // 排序字段
        prop: 'lm_date', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
        rows: 20 // 每页多少条
@@ -367,8 +416,11 @@
        { code: 1, name: '出库' },
        { code: 2, name: '上机' },
        { code: 3, name: '下机' },
        { code: 4, name: '维修' },
        { code: 5, name: '外借' }
        { code: 4, name: '待维修' },
        { code: 5, name: '已维修' },
        { code: 6, name: '已验证' },
        { code: 7, name: '外借' },
        { code: 8, name: '归还' }
      ],
      total: 10,
@@ -380,7 +432,7 @@
        mouldcode: '',
        mouldname: '',
        mouldspec: '',
        warehousecode: '',
        // warehousecode: '',
        surplife: '',
        resilife: '',
        status: 'Y',
@@ -393,10 +445,10 @@
        ],
        mouldname: [
          { required: true, message: '请输入模具名称', trigger: ['blur', 'change'] }
        ],
        warehousecode: [
          { required: true, message: '请输入选择仓库信息', trigger: ['blur', 'change'] }
        ]
        // warehousecode: [
        //   { required: true, message: '请输入选择仓库信息', trigger: ['blur', 'change'] }
        // ]
      },
      filterText: '',
      defaultProps: {
@@ -405,9 +457,9 @@
      },
      Inventory: [
        { code: '-1',
          name: '全部'
        }
        // { code: '-1',
        //   name: '全部'
        // }
      ],
      wareHouseArr: []
@@ -430,13 +482,13 @@
    this.getHeight()
  },
  methods: {
    async  getInventoryTreePermissions() {
    async getInventoryTreePermissions() {
      const res = await InventoryTreePermissions()
      res.data.forEach(i => {
        i.name = i.code + ' ' + i.name
      })
      this.Inventory = arrayToTree(this.Inventory.concat(res.data), {
      this.Inventory = arrayToTree(res.data, {
        parentProperty: 'parentid',
        customID: 'code',
        childrenProperty: 'children'
@@ -512,7 +564,7 @@
    // 重置
    reset() {
      this.form.mouldstaus = ''
      this.form.onstate = ''
      this.form.usestatus = ''
      this.form.mouldcode = ''
      this.form.mouldname = ''
@@ -524,17 +576,130 @@
    add() {
      this.operation = 'add'
      this.dialogForm.opertype = 'Add'
      this.dialogVisible = true
    },
    edit(row) {
      this.operation = 'edit'
      this.dialogVisible = true
      this.dialogForm.opertype = 'Update'
      this.$nextTick(() => {
        this.dialogForm.mouldcode = row.code
        this.dialogForm.mouldname = row.name
        this.dialogForm.mouldspec = row.spec
        // this.dialogForm.warehousecode = row.warehousecode
        this.dialogForm.surplife = row.surp_life
        this.dialogForm.resilife = row.resi_life
        this.dialogForm.status = row.status
        this.dialogForm.mouldpart = row.partcode ? row.partcode.split(',') : []
        this.$refs.tree.setCheckedKeys(this.dialogForm.mouldpart)
      })
    },
    connectClick(row) {
      this.operation = 'connect'
      this.dialogVisible = true
      this.dialogForm.opertype = 'Update'
      this.$nextTick(() => {
        this.dialogForm.mouldcode = row.code
        this.dialogForm.mouldname = row.name
        this.dialogForm.mouldspec = row.spec
        // this.dialogForm.warehousecode = row.warehousecode
        this.dialogForm.surplife = row.surp_life
        this.dialogForm.resilife = row.resi_life
        this.dialogForm.status = row.status
        this.dialogForm.mouldpart = row.partcode ? row.partcode.split(',') : []
        this.$refs.tree.setCheckedKeys(this.dialogForm.mouldpart)
      })
    },
    del(row) {
      this.$confirm('是否确认删除?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        DeleteMouldManger({ mouldcode: row.code }).then(res => {
          if (res.code === '200') {
            this.$notify.success('删除成功!')
            this.getMouldMangerSearch()
          }
        })
      }).catch(() => {
        this.$notify.info('已取消删除')
      })
    },
    handleClose() {
      this.dialogForm = {
        mouldcode: '',
        mouldname: '',
        mouldspec: '',
        // warehousecode: '',
        surplife: '',
        resilife: '',
        status: 'Y',
        mouldpart: '',
        opertype: ''
      }
      if (this.operation !== 'connect') {
        this.$refs.dialogForm.clearValidate()
      }
    },
    dialogVisibleCancel() {
      this.dialogVisible = false
    },
    dialogVisibleConfirm() {
      console.log(this.$refs.tree.getCheckedKeys())
      if (this.operation !== 'connect') {
        this.$refs.dialogForm.validate(valid => {
          if (valid) {
            const checkData = this.$refs.tree.getCheckedNodes()
            this.dialogForm.mouldpart = []
            checkData.forEach(item => {
              if (!Object.keys(item).includes('children')) {
                this.dialogForm.mouldpart.push(item.code)
              }
            })
            // if (this.dialogForm.mouldpart.length === 0) {
            //   return this.$message.info('关联产品不能为空!')
            // }
            this.$store.state.app.buttonIsDisabled = true
            AddUpdateMouldManger(this.dialogForm).then(res => {
              if (res.code === '200') {
                this.$notify.success(this.operation === 'add' ? '添加成功!' : '修改成功!')
                this.$refs.tree.setCheckedKeys([])
                this.dialogVisible = false
                this.$store.state.app.buttonIsDisabled = false
                this.getMouldMangerSearch()
              } else {
                this.$store.state.app.buttonIsDisabled = false
                this.$notify.error(this.operation === 'add' ? '添加失败!' : '修改失败!')
              }
            })
          }
        })
      } else {
        const checkData = this.$refs.tree.getCheckedNodes()
        this.dialogForm.mouldpart = []
        checkData.forEach(item => {
          if (!Object.keys(item).includes('children')) {
            this.dialogForm.mouldpart.push(item.code)
          }
        })
        this.$store.state.app.buttonIsDisabled = true
        AddUpdateMouldManger(this.dialogForm).then(res => {
          if (res.code === '200') {
            this.$notify.success('关联成功!')
            this.$refs.tree.setCheckedKeys([])
            this.dialogVisible = false
            this.$store.state.app.buttonIsDisabled = false
            this.getMouldMangerSearch()
          } else {
            this.$store.state.app.buttonIsDisabled = false
            this.$notify.error('关联失败!')
          }
        })
      }
    },
    filterNode(value, data) {
      if (!value) return true