loulijun2021
2022-08-23 b8ee668eaace5d422ebb27a200c3b178b82e2a6d
1.提交
已修改25个文件
2145 ■■■■ 文件已修改
src/api/scgl.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/global.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/myEcharts.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/jsqd.vue 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/wldw.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/yhqd.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/cgdd.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/ckgl.vue 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/kbCommon.css 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/zhkb.vue 360 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sbgl/sbqd.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/gd.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/scdd.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/sckbg.vue 626 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/template.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wlgl/ckdy.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wlgl/kwdy.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zlgl/gxjybz.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zlgl/gxjyxm.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zlgl/qxdy.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/chda.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/gxdy.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/gylx.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/jpgj.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/scgl.js
@@ -202,3 +202,28 @@
    params: data
  })
}
// 生产开报工扫码获取工单对应工序任务(不良)
export function MesOrderNgStepSearch(data) {
  return request({
    url: 'ProductionManagement/MesOrderNgStepSearch',
    method: 'get',
    params: data
  })
}
// 生产开报工扫码获取工单对应工序任务(不良明细)
export function MesOrderNgSubStepSearch(data) {
  return request({
    url: 'ProductionManagement/MesOrderNgSubStepSearch',
    method: 'get',
    params: data
  })
}
// 不良处理,提交
export function EditOrderNgStepSeave(data) {
  return request({
    url: 'ProductionManagement/EditOrderNgStepSeave',
    method: 'post',
    data
  })
}
src/layout/components/Navbar.vue
@@ -51,7 +51,7 @@
        <!--        <el-form-item label="用户名称:">-->
        <!--          <div> {{ username }}</div>-->
        <!--        </el-form-item>-->
        <el-form-item label="密码:" prop="password">
        <el-form-item label="原密码:" prop="password">
          <el-input v-model="form.password" style="width: 220px;" />
        </el-form-item>
        <el-form-item label="新密码:" prop="newpassword">
@@ -92,9 +92,20 @@
    this.username = getCookie('username')
  },
  data() {
    const validatePassword = (rule, value, callback) => {
    const validatePassword1 = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请输入密码!'))
        return callback(new Error('请输入原密码!'))
      } else {
        if (SER_HZ.test(value)) {
          return callback(new Error('密码不能为中文!'))
        } else {
          callback()
        }
      }
    }
    const validatePassword2 = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请输入新密码!'))
      } else {
        if (SER_HZ.test(value)) {
          return callback(new Error('密码不能为中文!'))
@@ -113,10 +124,10 @@
      dialogVisible: false,
      formRules: {
        password: [
          { required: true, validator: validatePassword, trigger: ['blur', 'change'] }
          { required: true, validator: validatePassword1, trigger: ['blur', 'change'] }
        ],
        newpassword: [
          { required: true, validator: validatePassword, trigger: ['blur', 'change'] }
          { required: true, validator: validatePassword2, trigger: ['blur', 'change'] }
        ]
      }
    }
src/styles/global.css
@@ -69,6 +69,10 @@
  justify-content: end;
}
.ellipsis{
  text-overflow    :ellipsis;overflow:hidden;white-space:nowrap;
}
/*
src/utils/myEcharts.js
@@ -350,7 +350,7 @@
}
// 综合看板图
export function bar02(dataArr,titlenameArr) {
export function bar02(dataArr, titlenameArr) {
  // console.log(val)
  // const data = [70, 60, 50, 40, 30]
  // const titlename = ['外观划伤', '表面油污', '尺寸', '颜色', '大小']
@@ -361,7 +361,10 @@
  const titlename = titlenameArr
  const valdata = [683, 500, 400, 300, 200]
  const myColor = ['#FF0000', '#FF5511', '#FF8800', '#FFBB00', '#FFFF00']
  // const myColor = ['#FF0000', '#FF5511', '#FF8800', '#FFBB00', '#FFFF00']
  // const myColor = ['#0000FF']
  // const myColor = ['#7af5f5', '#00FFFF', '#00FFFF', '#00FFFF', '#00FFFF']
  const myColor = ['rgba(122,245,245,1)', 'rgba(122,245,245,0.95)', 'rgba(122,245,245,0.9)', 'rgba(122,245,245,0.85)', 'rgba(122,245,245,0.8)']
  const option = {
    backgroundColor: 'transparent',
    title: {
@@ -381,8 +384,8 @@
      }
    },
    grid: {
      left: '2%',
      right: '2%',
      left: '10%',
      right: '5%',
      bottom: '0%',
      top: '10%',
      containLabel: true
@@ -408,11 +411,11 @@
          // color: '#d8d7d9',
          color: '#fff',
          fontSize: 14,
          formatter: function(value, index) {
            return [
              '{lg|' + (index + 1) + '、   }' + '{title|' + value + '} '
            ].join('\n')
          },
          // formatter: function(value, index) {
          //   return [
          //     '{lg|' + (index + 1) + '、   }' + '{title|' + value + '} '
          //   ].join('\n')
          // },
          rich: {
            lg: {
              // backgroundColor: '#339911',
src/views/jcsz/jsqd.vue
@@ -97,7 +97,12 @@
            min-width="160"
            label="角色描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.description">{{ row.description }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
@@ -122,8 +127,18 @@
            sortable="custom"
          >
            <template slot-scope="{row}">
              <i v-if="row.is_user==='Y'" class="el-icon-user-solid" style="color:#42b983;cursor: pointer" @click="userClick(row)" />
              <i v-if="row.is_user==='N'" class="el-icon-user-solid" style="color: rgb(180 ,181, 185);cursor: pointer" @click="userClick(row)" />
              <i
                v-if="row.is_user==='Y'"
                class="el-icon-user-solid"
                style="color:#42b983;cursor: pointer"
                @click="userClick(row)"
              />
              <i
                v-if="row.is_user==='N'"
                class="el-icon-user-solid"
                style="color: rgb(180 ,181, 185);cursor: pointer"
                @click="userClick(row)"
              />
            </template>
          </el-table-column>
          <el-table-column
@@ -134,7 +149,12 @@
          >
            <template slot-scope="{row}">
              <i v-if="row.is_right==='Y'" class="el-icon-share" @click="rightClick(row)" />
              <i v-if="row.is_right==='N'" class="el-icon-share" style="color: rgb(180 ,181, 185)" @click="rightClick(row)" />
              <i
                v-if="row.is_right==='N'"
                class="el-icon-share"
                style="color: rgb(180 ,181, 185)"
                @click="rightClick(row)"
              />
            </template>
          </el-table-column>
          <el-table-column
@@ -379,12 +399,12 @@
        ref="multipleTable"
        :data="dialogFormUserTable"
        border
        :row-class-name="tableRowClassName"
        highlight-current-row
        :height="isIpad?400:365"
        :header-cell-style="this.$headerCellStyle"
        :cell-style="this.$cellStyle"
        :row-key="getRowKey"
        :row-class-name="tableRowClassName"
        @sort-change="sortChangeOfUser"
        @selection-change="handleSelectionChange"
      >
@@ -394,6 +414,7 @@
          type="selection"
          width="50"
          :reserve-selection="true"
          fixed
        />
        <el-table-column
          prop="RowNum"
@@ -419,10 +440,17 @@
          prop="flag"
          label="关联角色"
          sortable="custom"
          fixed="right"
        >
          <template slot-scope="{row}">
            <div v-if="row.flag==='Y'">是</div>
            <div v-if="row.flag==='N'">否</div>
            <div v-if="row.flag==='Y'">
              <svg-icon icon-class="circleYes" style="margin-right: 2px" />
              是
            </div>
            <div v-if="row.flag==='N'">
              <svg-icon icon-class="circleNo" style="margin-right: 2px" />
              否
            </div>
          </template>
        </el-table-column>
      </el-table>
@@ -525,7 +553,14 @@
    </el-dialog>
    <!--导入组件-->
    <import-picker ref="importPickerFunc" class="importPickerClass" :shows.sync="shows" :title="title_value" :colos="colos" :code="code" />
    <import-picker
      ref="importPickerFunc"
      class="importPickerClass"
      :shows.sync="shows"
      :title="title_value"
      :colos="colos"
      :code="code"
    />
  </div>
</template>
@@ -1132,9 +1167,9 @@
      // 目前一期肯定是这个
      if (this.PCTrue && !this.APPTrue) {
        pcIsSelected1 = true
        // pcIsSelected1 = true
        if (rightPCArrFlag === 'Y') {
          // pcIsSelected1 = true
          pcIsSelected1 = true
          pcIsSelected2 = true
          const interval = setInterval(() => {
@@ -1149,9 +1184,9 @@
            }
          }, 100)
          // this.dialogFormRight.rightCurrentCode = this.dialogFormRight.rightPCArr[0].code
          this.dialogFormRight.rightCurrentCode = this.dialogFormRight.rightPCArr[0].code
        }
        this.dialogFormRight.rightCurrentCode = this.dialogFormRight.rightPCArr[0].code
        // this.dialogFormRight.rightCurrentCode = this.dialogFormRight.rightPCArr[0].code
      }
      if (!this.PCTrue && this.APPTrue) {
@@ -1495,6 +1530,7 @@
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
.settingDialogVisible, .userDialogVisible, .dialogVisibleRight {
  ::v-deep .el-dialog__body {
    padding: 10px 20px !important;
@@ -1566,11 +1602,16 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
::v-deep .el-button--text{
  font-size: 14px ;
  cursor: pointer ;
}
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline{
.el-icon-edit-outline {
  margin-right: 15px;
}
@@ -1631,8 +1672,8 @@
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td{
  background-color: #eaecef ;
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
@@ -1648,6 +1689,7 @@
.body ::v-deep .el-form-item {
  margin-bottom: 0;
}
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
@@ -1658,7 +1700,9 @@
.el-table .custom-row {
  background: #f8f8fa;
}
.el-form-item__label{
.el-form-item__label {
  font-weight: 400 !important
}
</style>
src/views/jcsz/wldw.vue
@@ -133,19 +133,34 @@
            label="联系人"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.conttacts">{{ row.conttacts }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="conttphone"
            label="联系方式"
            width="160"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.conttphone">{{ row.conttphone }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="addr"
            min-width="160"
            label="补充描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.addr">{{ row.addr }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
src/views/jcsz/yhqd.vue
@@ -605,7 +605,7 @@
        id: '',
        UserCode: '',
        UserName: '',
        Password: '',
        Password: '123456',
        Enable: 'Y',
        StuOrg: '',
        Mobile: '',
@@ -613,7 +613,7 @@
        groupcode: '',
        Operator: '',
        OperType: '',
        wagetype: ''
        wagetype: '2'
      },
      usergroupArr: [], // 生产班组数组
      wagetypeArr: [
@@ -820,14 +820,14 @@
      this.dialogForm.UserCode = ''
      this.dialogForm.UserCode = ''
      this.dialogForm.UserName = ''
      this.dialogForm.Password = ''
      this.dialogForm.Password = '123456'
      this.dialogForm.Enable = 'Y'
      this.$refs.dialogCascader.checkedValue = ''
      this.dialogForm.StuOrg = ''
      this.dialogForm.Mobile = ''
      this.dialogForm.Email = ''
      this.dialogForm.groupcode = ''
      this.dialogForm.wagetype = ''
      this.dialogForm.wagetype = '2'
      this.$refs.dialogForm.clearValidate()
    },
    // 对话框取消
@@ -1340,6 +1340,11 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-button--text{
  font-size: 14px ;
  cursor: pointer ;
}
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
  color: $main_color;
  cursor: pointer;
src/views/kb/cgdd.vue
@@ -39,7 +39,7 @@
          <!-- 2-->
          <div class="kb_left_bottom kb_pd10">
            <div class="kb_left_bottom_content">
              <div class="content_head">采购到货跟踪:</div>
              <div class="content_head kb_title_text">采购到货跟踪</div>
              <div class="content_body">
                <el-table
                  ref="tableData"
@@ -63,33 +63,53 @@
                  <el-table-column
                    prop="suppername"
                    label="供应商"
                    width="163"
                  />
                    width="125"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.suppername" class="ellipsis">{{ row.suppername }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="username"
                    label="采购员"
                    width="68"
                  />
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.username">{{ row.username }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    width="84"
                    width="108"
                  />
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    width="168"
                    width="155"
                  />
                  <el-table-column
                    prop="partspec"
                    label="规格型号"
                    width="84"
                  />
                    width="130"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="quantity"
                    label="订单数量"
                    width="84"
                  />
                    width="74"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity">{{ parseFloat(row.quantity) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="checktype"
                    label="检验状态"
@@ -108,23 +128,30 @@
                  <el-table-column
                    prop="quantity1"
                    label="已收数量"
                    width="84"
                  />
                  <el-table-column
                    label="未收数量"
                    width="84"
                    width="74"
                  >
                    <template slot-scope="{row}">
                      <div>{{ parseFloat(row.quantity- row.quantity1) }}</div>
                      <div v-if="row.quantity1">{{ parseFloat(row.quantity1) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    label="未收数量"
                    width="74"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity- row.quantity1">{{ parseFloat(row.quantity- row.quantity1) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="acceptDate"
                    label="预计交期"
                    width="84"
                    width="95"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.acceptDate.substring(5, 10) }}</div>
                      <div v-if="row.acceptDate">{{ row.acceptDate.substring(0, 10) }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
@@ -134,8 +161,9 @@
                  >
                    <template slot-scope="{row}">
                      <div v-if="parseFloat(row.warning)<0" style="color: red">{{ Math.abs(parseFloat(row.warning)) }}</div>
                      <div v-else-if="row.warning===null">0</div>
                      <div v-else>{{ row.warning }}</div>
                      <div v-else-if="row.warning===null||row.warning===''||row.warning===0">0</div>
                      <div v-else-if="parseFloat(row.warning)>3">{{ row.warning }}</div>
                      <div v-else-if="parseFloat(row.warning)>0&&parseFloat(row.warning)<=3" style="color:yellow;">{{ row.warning }}</div>
                    </template>
                  </el-table-column>
                </el-table>
@@ -146,7 +174,7 @@
        <div class="kb_right kb_pd10">
          <div class="kb_right_top kb_pd10">
            <div class="kb_right_top_content">
              <div class="content_head">供应商延期交货排行:</div>
              <div class="content_head kb_title_text">供应商延期交货排行</div>
              <div class="content_body">
                <el-table
                  ref="tableDataRank"
@@ -160,7 +188,7 @@
                  <el-table-column
                    type="index"
                    label="序号"
                    width="100"
                    width="90"
                  >
                    <template slot-scope="{row}">
                      <div>NO.{{ row.index }}</div>
@@ -174,17 +202,17 @@
                  <el-table-column
                    prop="suppercode"
                    label="供应商编码"
                    width="145"
                    width="170"
                  />
                  <el-table-column
                    prop="suppername"
                    width="163"
                    width="183"
                    label="供应商名称"
                  />
                  <el-table-column
                    prop="cont"
                    label="延期次数"
                    width="125"
                    width="90"
                  />
                </el-table>
              </div>
@@ -229,7 +257,7 @@
    getPurchaseLeftTop() {
      PurchaseLeftTop().then(res => {
        this.purchaseLeftTopData = res.data[0]
        console.log(this.purchaseLeftTopData)
        // console.log(this.purchaseLeftTopData)
      })
      setInterval(() => {
        PurchaseLeftTop().then(res => {
@@ -241,45 +269,45 @@
    getPurchaseLeftBottom() {
      PurchaseLeftBottom().then(res => {
        this.tableData = res.data
      })
      const divData = this.$refs.tableData.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          PurchaseLeftBottom().then(res => {
            this.tableData = res.data
          })
        }
      }, this.tableData.length <= 14 ? 1000 * 6 : 100)
        const divData = this.$refs.tableData.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            PurchaseLeftBottom().then(res => {
              this.tableData = res.data
            })
          }
        }, this.tableData.length <= 14 ? 1000 * 6 : 100)
      })
    },
    getPurchaseRight() {
      PurchaseRight().then(res => {
        this.tableDataRank = res.data
      })
      const divData = this.$refs.tableDataRank.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          PurchaseRight().then(res => {
            this.tableDataRank = res.data
          })
        }
      }, this.tableDataRank.length <= 22 ? 1000 * 6 : 100)
        const divData = this.$refs.tableDataRank.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            PurchaseRight().then(res => {
              this.tableDataRank = res.data
            })
          }
        }, this.tableDataRank.length <= 22 ? 1000 * 6 : 100)
      })
    },
    tableRowClassName({ row, rowIndex }) {
@@ -335,7 +363,8 @@
</script>
<style scoped lang="scss">
$kbBorderColor: #09d8f2;
//$kbBorderColor: #09d8f2;
$kbBorderColor: rgba(9,216,242,0.4);
.kb_content {
  display: flex;
@@ -459,4 +488,8 @@
  /* width: 0;宽度为0暗藏 */
  width: 0;
}
::v-deep .cell {
  padding: 0 !important;
}
</style>
src/views/kb/ckgl.vue
@@ -14,9 +14,10 @@
      <div class="kb_content">
        <div class="kb_left">
          <!-- 1-->
          <!--          <div class="kb_left_top kb_pd10" style="padding:10px 0px 10px 5px">-->
          <div class="kb_left_top kb_pd10">
            <div class="kb_left_top_block" style="margin-top: 10px">
              <div class="headTitle">产品待入库:</div>
              <div class="headTitle kb_title_text">产品待入库</div>
              <div class="content">
                <el-table
                  ref="tableDataTopRef"
@@ -29,27 +30,33 @@
                  <el-table-column
                    prop="voucherdate"
                    label="单据日期"
                    width="86"
                    width="110"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.voucherdate.substring(5, 10) }}</div>
                      <div v-if=" row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="wo"
                    label="单据编号"
                    width="165"
                    width="149"
                  />
                  <el-table-column
                    prop="wkshp_name"
                    label="生产车间"
                    width="86"
                    width="95"
                  />
                  <el-table-column
                    prop="saleOrderCode"
                    label="销售订单号"
                    width="178"
                  />
                    width="170"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="materiel_code"
                    label="产品编号"
@@ -58,56 +65,73 @@
                  <el-table-column
                    prop="materiel_name"
                    label="产品名称"
                    width="105"
                    width="140"
                  />
                  <el-table-column
                    prop="specification"
                    label="规格型号"
                    width="85"
                  />
                    width="113"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="stck_name"
                    label="预入仓库"
                    width="100"
                  />
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.stck_name">{{ row.stck_name }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="quantity"
                    label="数量"
                    width="60"
                    width="50"
                  />
                  <el-table-column
                    prop="totalStockInQuantity"
                    label="已入库数量"
                    width="105"
                  />
                    width="80"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.totalStockInQuantity">{{ row.totalStockInQuantity }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="uomname"
                    label="单位"
                    width="90"
                    width="50"
                  />
                  <el-table-column
                    prop="preStartDate"
                    label="预计开工"
                    width="86"
                    width="100"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.preStartDate.substring(5, 10) }}</div>
                      <div v-if="row.preStartDate">{{ row.preStartDate.substring(0, 10) }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="preFinishDate"
                    label="预计完工"
                    width="86"
                    width="110"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.preFinishDate.substring(5, 10) }}</div>
                      <div v-if="row.preFinishDate">{{ row.preFinishDate.substring(0, 10) }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </div>
            <div class="kb_left_top_block" style="margin-top: 25px">
              <div class="headTitle">产品待发货:</div>
              <div class="headTitle kb_title_text">产品待发货</div>
              <div class="content">
                <el-table
                  ref="tableDataBottomRef"
@@ -120,75 +144,97 @@
                  <el-table-column
                    prop="voucherdate"
                    label="单据日期"
                    width="86"
                    width="110"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.voucherdate.substring(5, 10) }}</div>
                      <div v-if="row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="wo"
                    label="单据编号"
                    width="165"
                    width="145"
                  />
                  <el-table-column
                    prop="customename"
                    label="客户"
                    width="170"
                  />
                    width="125"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.customename" class="ellipsis">{{ row.customename }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="username"
                    label="业务员"
                    width="68"
                    width="65"
                  />
                  <el-table-column
                    prop="SourceVoucherCode"
                    label="来源单号"
                    width="119"
                  />
                    width="145"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.SourceVoucherCode">{{ row.SourceVoucherCode }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="materiel_code"
                    label="产品编号"
                    width="86"
                    width="96"
                  />
                  <el-table-column
                    prop="materiel_name"
                    label="产品名称"
                    width="86"
                    width="170"
                  />
                  <el-table-column
                    prop="specification"
                    label="规格型号"
                    width="86"
                  />
                    width="100"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="quantity"
                    label="数量"
                    width="60"
                    width="47"
                  />
                  <el-table-column
                    prop="saleOutQuantity"
                    label="已发货数量"
                    width="100"
                  />
                    width="80"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.saleOutQuantity">{{ row.saleOutQuantity }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="priuserdefnvc1"
                    label="检验方式"
                    width="86"
                    width="80"
                  />
                  <el-table-column
                    prop="priuserdefnvc2"
                    label="检验人员"
                    width="86"
                    width="80"
                  />
                  <el-table-column
                    prop="deliveryDate"
                    label="预计交货日期"
                    width="120"
                    width="110"
                  >
                    <!--                    <template slot-scope="{row}">-->
                    <!--                      <div>{{ row.deliveryDate.substring(5,10) }}</div>-->
                    <!--                    </template>-->
                    <template slot-scope="{row}">
                      <div v-if="row.deliveryDate">{{ row.deliveryDate.substring(0,10) }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                </el-table>
              </div>
@@ -209,11 +255,11 @@
        <div class="kb_right kb_pd10">
          <div class="kb_right_top kb_pd10">
            <div class="kb_right_top_content">
              <div class="content_head">产品库存量排行Top5:</div>
              <div class="content_head kb_title_text">产品库存量排行Top5</div>
              <div class="content_body">
                <div id="bar03" style="width: 100%;height:100%" />
              </div>
              <div class="content_head" style="margin-top: 12px">原料库存量排行Top5:</div>
              <div class="content_head kb_title_text" style="margin-top: 12px">原料库存量排行Top5</div>
              <div class="content_body">
                <div id="bar04" style="width: 100%;height:100%" />
              </div>
@@ -230,7 +276,6 @@
import './kbCommon.css'
import { bar02, loadEcharts } from '@/utils/myEcharts'
import {
  LineSearchBottomLeftData,
  WareHouseRightBottomData,
  WareHouseRightTopData,
  WareHouseTopBottomData,
@@ -260,66 +305,66 @@
    getWareHouseTopLeftData() {
      WareHouseTopLeftData().then(res => {
        this.tableDataTop = res.data
      })
      const divData = this.$refs.tableDataTopRef.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        divData.scrollTop += 1
        // divData.scrollTop += divData.scrollHeight / this.tableData.length
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          WareHouseTopLeftData().then(res => {
            this.tableDataTop = res.data
          })
        }
      }, this.tableDataTop.length <= 10 ? 1000 * 6 : 100)
        const divData = this.$refs.tableDataTopRef.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // divData.scrollTop += divData.scrollHeight / this.tableData.length
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopLeftData().then(res => {
              this.tableDataTop = res.data
            })
          }
        }, this.tableDataTop.length <= 10 ? 1000 * 6 : 100)
      })
    },
    // 获取左下table数据
    getWareHouseTopBottomData() {
      WareHouseTopBottomData().then(res => {
        this.tableDataBottom = res.data
      })
      const divData = this.$refs.tableDataBottomRef.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        divData.scrollTop += 1
        // divData.scrollTop += divData.scrollHeight / this.tableData.length
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          WareHouseTopBottomData().then(res => {
            this.tableDataBottom = res.data
          })
        }
      }, this.tableDataBottom.length <= 10 ? 1000 * 6 : 100)
        const divData = this.$refs.tableDataBottomRef.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // divData.scrollTop += divData.scrollHeight / this.tableData.length
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopBottomData().then(res => {
              this.tableDataBottom = res.data
            })
          }
        }, this.tableDataBottom.length <= 10 ? 1000 * 6 : 100)
      })
    },
    // 获取echarts
    getEcharts() {
      WareHouseRightTopData().then(res => {
        loadEcharts('bar03', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name)))
        loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      })
      WareHouseRightBottomData().then(res => {
        loadEcharts('bar04', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name)))
        loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      })
      setInterval(() => {
        WareHouseRightTopData().then(res => {
          loadEcharts('bar03', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name)))
          loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
      setInterval(() => {
        WareHouseRightBottomData().then(res => {
          loadEcharts('bar04', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name)))
          loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
    },
@@ -363,7 +408,8 @@
</script>
<style scoped lang="scss">
$kbBorderColor: #09d8f2;
//$kbBorderColor: #09d8f2;
$kbBorderColor: rgba(9,216,242,0.4);
$kbBackgroundColor: rgba(30, 33, 46, 0.6);
.kb_content {
@@ -375,7 +421,7 @@
  letter-spacing: 2px;
  .kb_left {
    width: 1345px;
    width: 1380px;
    height: 100%;
    padding-left: 5px;
@@ -431,7 +477,7 @@
  }
  .kb_right {
    width: 575px;
    width: 540px;
    height: 100%;
    .kb_right_top {
@@ -475,4 +521,8 @@
::v-deep .el-table::before {
  height: 0;
}
::v-deep .cell {
  padding: 0 !important;
}
</style>
src/views/kb/kbCommon.css
@@ -22,6 +22,11 @@
.kb_header_text {
  letter-spacing: 5px;
  font-weight: bolder;
}
.kb_title_text{
  font-weight: bolder;
}
.kb_headerPic {
src/views/kb/zhkb.vue
@@ -14,14 +14,13 @@
      <div class="kb_content">
        <div class="kb_left">
          <!-- 1-->
          <div class="kb_left_top_title01">
          <div class="kb_left_top_title01 kb_title_text">
            <!--            <div class="PG01" />-->
            <!--            <svg-icon icon-class="sccx" />-->
            产线加工中任务:
            产线加工中任务
          </div>
          <div class="kb_left_top kb_pd10">
            <!--            {{ lineContent01 }}-->
            <div class="kb_left_top_block">
              <div class="kb_block01 kb_pd10">
@@ -46,18 +45,15 @@
                  <div class="kb_mt5">
                    产品名称:{{ lineContent01.children !== undefined ? lineContent01.children.partname : '' }}
                  </div>
                  <div class="kb_mt5">
                    任务数量:{{ lineContent01.children !== undefined ? parseFloat(lineContent01.children.qty) : '' }}
                  <div v-if="lineContent01.children&&lineContent01.children.length===0" class="kb_mt5">
                    任务数量:
                  </div>
                  <div v-else class="kb_mt5">
                    任务数量:{{ lineContent01.children? parseFloat(lineContent01.children.qty) : '' }}
                  </div>
                </div>
                <div v-if="lineContent01.children!==undefined">
                  <!--                  <div>{{ lineContent01.children.saleordercode }}</div>-->
                  <!--                  <div class="kb_mt5 ">{{ lineContent01.children.workcode }}</div>-->
                  <!--                  <div class="kb_mt5">{{ lineContent01.children.partname }}</div>-->
                  <!--                  <div v-if="parseFloat(lineContent01.children.qty)!==0" class="kb_mt5">-->
                  <!--                    {{ parseFloat(lineContent01.children.qty) }}-->
                  <!--                  </div>-->
                </div>
              </div>
              <div class="kb_block03 kb_pd10 ">
                <div v-if="lineContent01.children!==undefined" class="flex_s_c">
@@ -95,7 +91,7 @@
                      <div
                        v-if="item.status==='START'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
                        class="circle"
                        style="background-color: red;"
                        style="background-color: blue;"
                      />
                      <div
                        v-else-if="item.status==='ALLO'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
@@ -138,18 +134,14 @@
                  <div class="kb_mt5">
                    产品名称:{{ lineContent02.children !== undefined ? lineContent02.children.partname : '' }}
                  </div>
                  <div class="kb_mt5">
                    任务数量:{{ lineContent02.children !== undefined ? parseFloat(lineContent02.children.qty) : '' }}
                  <div v-if="lineContent02.children&&lineContent02.children.length===0" class="kb_mt5">
                    任务数量:
                  </div>
                  <div v-else class="kb_mt5">
                    任务数量:{{ lineContent02.children ? parseFloat(lineContent02.children.qty) : '' }}
                  </div>
                </div>
                <div v-if="lineContent02.children!==undefined">
                  <!--                  <div>{{ lineContent02.children.saleordercode }}</div>-->
                  <!--                  <div class="kb_mt5 ">{{ lineContent02.children.workcode }}</div>-->
                  <!--                  <div class="kb_mt5">{{ lineContent02.children.partname }}</div>-->
                  <!--                  <div v-if="parseFloat(lineContent02.children.qty)!==0" class="kb_mt5">-->
                  <!--                    {{ parseFloat(lineContent02.children.qty) }}-->
                  <!--                  </div>-->
                </div>
              </div>
              <div class="kb_block03 kb_pd10 ">
                <div v-if="lineContent02.children!==undefined" class="flex_s_c">
@@ -187,7 +179,7 @@
                      <div
                        v-if="item.status==='START'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
                        class="circle"
                        style="background-color: red;"
                        style="background-color: blue;"
                      />
                      <div
                        v-else-if="item.status==='ALLO'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
@@ -229,18 +221,14 @@
                  <div class="kb_mt5">
                    产品名称:{{ lineContent03.children !== undefined ? lineContent03.children.partname : '' }}
                  </div>
                  <div class="kb_mt5">
                    任务数量:{{ lineContent03.children !== undefined ? parseFloat(lineContent03.children.qty) : '' }}
                  <div v-if="lineContent03.children&&lineContent03.children.length===0" class="kb_mt5">
                    任务数量:
                  </div>
                  <div v-else class="kb_mt5">
                    任务数量:{{ lineContent03.children ? parseFloat(lineContent03.children.qty) : '' }}
                  </div>
                </div>
                <div v-if="lineContent03.children!==undefined">
                  <!--                  <div>{{ lineContent03.children.saleordercode }}</div>-->
                  <!--                  <div class="kb_mt5 ">{{ lineContent03.children.workcode }}</div>-->
                  <!--                  <div class="kb_mt5">{{ lineContent03.children.partname }}</div>-->
                  <!--                  <div v-if="parseFloat(lineContent03.children.qty)!==0" class="kb_mt5">-->
                  <!--                    {{ parseFloat(lineContent03.children.qty) }}-->
                  <!--                  </div>-->
                </div>
              </div>
              <div class="kb_block03 kb_pd10 ">
                <div v-if="lineContent03.children!==undefined" class="flex_s_c">
@@ -278,7 +266,7 @@
                      <div
                        v-if="item.status==='START'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
                        class="circle"
                        style="background-color: red;"
                        style="background-color: blue;"
                      />
                      <div
                        v-else-if="item.status==='ALLO'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
@@ -320,18 +308,14 @@
                  <div class="kb_mt5">
                    产品名称:{{ lineContent04.children !== undefined ? lineContent04.children.partname : '' }}
                  </div>
                  <div class="kb_mt5">
                    任务数量:{{ lineContent04.children !== undefined ? parseFloat(lineContent04.children.qty) : '' }}
                  <div v-if="lineContent04.children&&lineContent04.children.length===0" class="kb_mt5">
                    任务数量:
                  </div>
                  <div v-else class="kb_mt5">
                    任务数量:{{ lineContent04.children ? parseFloat(lineContent04.children.qty) : '' }}
                  </div>
                </div>
                <div v-if="lineContent04.children!==undefined">
                  <!--                  <div>{{ lineContent04.children.saleordercode }}</div>-->
                  <!--                  <div class="kb_mt5 ">{{ lineContent04.children.workcode }}</div>-->
                  <!--                  <div class="kb_mt5">{{ lineContent04.children.partname }}</div>-->
                  <!--                  <div v-if="parseFloat(lineContent04.children.qty)!==0" class="kb_mt5">-->
                  <!--                    {{ parseFloat(lineContent04.children.qty) }}-->
                  <!--                  </div>-->
                </div>
              </div>
              <div class="kb_block03 kb_pd10 ">
                <div v-if="lineContent04.children!==undefined" class="flex_s_c">
@@ -369,7 +353,7 @@
                      <div
                        v-if="item.status==='START'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
                        class="circle"
                        style="background-color: red;"
                        style="background-color: blue;"
                      />
                      <div
                        v-else-if="item.status==='ALLO'&&(parseFloat(item.ngqty)===0||item.ngqty==='')&&(parseFloat(item.goodqty)===0||item.goodqty==='')"
@@ -392,7 +376,7 @@
          <!-- 2-->
          <div class="kb_left_bottom kb_pd10">
            <div class="kb_left_bottom_content">
              <div class="content_head">产线加工任务:</div>
              <div class="content_head kb_title_text">产线加工任务</div>
              <div class="content_body">
                <el-table
                  ref="tableData"
@@ -405,12 +389,12 @@
                  <el-table-column
                    prop="RowNum"
                    label="序号"
                    width="53"
                    width="40"
                  />
                  <el-table-column
                    prop="status"
                    label="加工状态"
                    width="85"
                    width="70"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.status==='ALLO'">已派发</div>
@@ -421,77 +405,82 @@
                  <el-table-column
                    prop="lm_date"
                    label="派发时间"
                    width="86"
                    width="95"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.lm_date.substring(5, 10) }}</div>
                      <div>{{ row.lm_date.substring(0, 10) }}</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="saleOrderCode"
                    label="销售订单号"
                    width="150"
                    width="158"
                  />
                  <el-table-column
                    prop="wo_code"
                    label="加工单号"
                    width="207"
                    width="170"
                  />
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    width="105"
                    width="145"
                  />
                  <el-table-column
                    prop="partspec"
                    label="规格"
                    width="60"
                  />
                    width="130"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="name"
                    label="单位"
                    width="60"
                    width="50"
                  />
                  <el-table-column
                    prop="plan_qty"
                    label="任务数量"
                    width="90"
                    width="70"
                  />
                  <el-table-column
                    prop="good_qty"
                    label="完工数量"
                    width="90"
                    width="70"
                  />
                  <el-table-column
                    prop="ng_qty"
                    label="不良数量"
                    width="90"
                    width="70"
                  />
                  <el-table-column
                    prop="wcl"
                    label="完成率"
                    width="70"
                    width="50"
                  >
                    <template slot-scope="{row}">
                      <div>{{ parseFloat((row.good_qty / row.plan_qty).toFixed(2)) }}%</div>
                      <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="planenddate"
                    label="预计开始"
                    width="86"
                    width="95"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.planenddate.substring(5, 10) }}</div>
                      <div>{{ row.planenddate.substring(0, 10) }}</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="planstartdate"
                    label="预计结束"
                    width="86"
                    width="105"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.planstartdate.substring(5, 10) }}</div>
                      <div>{{ row.planstartdate.substring(0, 10) }}</div>
                    </template>
                  </el-table-column>
                </el-table>
@@ -502,7 +491,7 @@
        <div class="kb_right kb_pd10">
          <div class="kb_right_top kb_pd10">
            <div class="kb_right_top_content">
              <div class="content_head">当日完工产品数量排行:</div>
              <div class="content_head kb_title_text">当日完工产品数量排行</div>
              <div class="content_body">
                <el-table
                  ref="tableDataRank"
@@ -520,9 +509,14 @@
                  />
                  <el-table-column
                    prop="wkshname"
                    label="车间"
                    label="车间(供方)"
                    width="120"
                  />
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.wkshname" class="ellipsis">{{ row.wkshname }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="linename"
                    label="产线"
@@ -543,8 +537,8 @@
            </div>
          </div>
          <div class="kb_right_bottom kb_pd10">
            <div class="kb_right_bottom_content_title">
              一周不良Top5:
            <div class="kb_right_bottom_content_title kb_title_text">
              一周不良Top5
            </div>
            <div class="kb_right_bottom_content">
              <div id="bar02" style="width: 100%;height:100%" />
@@ -613,29 +607,7 @@
      leftTopData: [],
      tableData: [],
      tableDataRank: [// 排行
        // { xh: 'NO.1', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.2', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.3', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.4', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.5', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.6', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.7', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.8', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.9', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.10', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.11', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.12', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.13', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.14', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.15', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.16', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.17', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.18', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.19', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 },
        // { xh: 'NO.20', cj: '锂电车间', cx: '锂电1线', cp: 'F09锂电', sl: 1000 }
        //
      ]
      tableDataRank: []
    }
  },
@@ -670,8 +642,22 @@
    },
    // 处理每一条产线
    async handleEveryLine(item, index) {
      const { data: res } = await LineSearchTopLeftData([item])
      console.log(res, 8999)
      const res = await LineSearchTopLeftData([item])
      console.log(res, 7)
      let res1, res2, res3, res4
      if (res.data[0].linecode === 'CXSB001') {
        res1 = res
      }
      if (res.data[0].linecode === 'CXSB002') {
        res2 = res
      }
      if (res.data[0].linecode === 'CXSB003') {
        res3 = res
      }
      if (res.data[0].linecode === 'CXSB004') {
        res4 = res
      }
      let flag1 = true
      let flag2 = true
      let flag3 = true
@@ -680,179 +666,176 @@
        let count = 0
        if (flag1) {
          this.lineContent01 = {
            linename: res[0].linename,
            lineworkcont: res[0].lineworkcont,
            children: res[0].children[count]
            linename: res1.data[0].linename,
            lineworkcont: res1.data[0].lineworkcont,
            children: res1.data[0].children ? res.data[0].children[count] : []
            // children: res1.data[0].children[count]
          }
          flag1 = false
        }
        setInterval(() => {
          if (count > 0) {
            this.lineContent01 = {
              linename: res[0].linename,
              lineworkcont: res[0].lineworkcont,
              children: res[0].children[count]
              linename: res1.data[0].linename,
              lineworkcont: res1.data[0].lineworkcont,
              children: res1.data[0].children ? res1.data[0].children[count] : []
            }
          }
          // count++
          if (res[0].children.length === count++) {
          // console.log(res1.data[0].children.length, 9999)
          // console.log(res1.data[0].children, 8888)
          if (res1.data[0].children.length > 0 && res1.data[0].children.length === count++) {
            count = 0
            LineSearchTopLeftData([item]).then(res => {
              res1 = res
              this.lineContent01 = {
                linename: res.data[0].linename,
                lineworkcont: res.data[0].lineworkcont,
                children: res.data[0].children[count]
                linename: res1.data[0].linename,
                lineworkcont: res1.data[0].lineworkcont,
                children: res1.data[0].children ? res1.data[0].children[count] : []
              }
            })
            // this.handleEveryLine(item, index)
          }
        }, 1000 * 6)
        }, res1.data[0].children && res1.data[0].children.length > 0 ? 1000 * 3 : 1000 * 10)
      } else if (index === 1) {
        let count = 0
        if (flag2) {
          this.lineContent02 = {
            linename: res[0].linename,
            lineworkcont: res[0].lineworkcont,
            children: res[0].children[count]
            linename: res2.data[0].linename,
            lineworkcont: res2.data[0].lineworkcont,
            children: res2.data[0].children ? res2.data[0].children[count] : []
          }
          flag2 = false
        }
        setInterval(() => {
          if (count > 0) {
            this.lineContent02 = {
              linename: res[0].linename,
              lineworkcont: res[0].lineworkcont,
              children: res[0].children[count]
              linename: res2.data[0].linename,
              lineworkcont: res2.data[0].lineworkcont,
              children: res2.data[0].children ? res2.data[0].children[count] : []
            }
          }
          // count++
          console.log(this.lineContent02, 123)
          if (res[0].children.length === count++) {
          if (res2.data[0].children.length > 0 && res2.data[0].children.length === count++) {
            count = 0
            LineSearchTopLeftData([item]).then(res => {
              res2 = res
              this.lineContent02 = {
                linename: res.data[0].linename,
                lineworkcont: res.data[0].lineworkcont,
                children: res.data[0].children[count]
                linename: res2.data[0].linename,
                lineworkcont: res2.data[0].lineworkcont,
                children: res2.data[0].children ? res2.data[0].children[count] : []
              }
            })
            // this.handleEveryLine(item, index)
          }
        }, 1000 * 6)
        }, res2.data[0].children && res2.data[0].children.length > 0 ? 1000 * 3 : 1000 * 10)
      } else if (index === 2) {
        let count = 0
        if (flag3) {
          this.lineContent03 = {
            linename: res[0].linename,
            lineworkcont: res[0].lineworkcont,
            children: res[0].children[count]
            linename: res3.data[0].linename,
            lineworkcont: res3.data[0].lineworkcont,
            children: res3.data[0].children ? res3.data[0].children[count] : []
          }
          flag3 = false
        }
        setInterval(() => {
          if (count > 0) {
            this.lineContent03 = {
              linename: res[0].linename,
              lineworkcont: res[0].lineworkcont,
              children: res[0].children[count]
              linename: res3.data[0].linename,
              lineworkcont: res3.data[0].lineworkcont,
              children: res3.data[0].children ? res3.data[0].children[count] : []
            }
          }
          // count++
          if (res[0].children.length === count++) {
          if (res3.data[0].children.length > 0 && res3.data[0].children.length === count++) {
            count = 0
            LineSearchTopLeftData([item]).then(res => {
              res3 = res
              this.lineContent03 = {
                linename: res.data[0].linename,
                lineworkcont: res.data[0].lineworkcont,
                children: res.data[0].children[count]
                linename: res3.data[0].linename,
                lineworkcont: res3.data[0].lineworkcont,
                children: res3.data[0].children ? res3.data[0].children[count] : []
              }
            })
            // this.handleEveryLine(item, index)
          }
        }, 1000 * 6)
        }, res3.data[0].children && res3.data[0].children.length > 0 ? 1000 * 3 : 1000 * 10)
      } else if (index === 3) {
        let count = 0
        if (flag4) {
          this.lineContent04 = {
            linename: res[0].linename,
            lineworkcont: res[0].lineworkcont,
            children: res[0].children[count]
            linename: res4.data[0].linename,
            lineworkcont: res4.data[0].lineworkcont,
            children: res4.data[0].children ? res4.data[0].children[count] : []
          }
          flag4 = false
        }
        setInterval(() => {
          if (count > 0) {
            this.lineContent04 = {
              linename: res[0].linename,
              lineworkcont: res[0].lineworkcont,
              children: res[0].children[count]
              linename: res4.data[0].linename,
              lineworkcont: res4.data[0].lineworkcont,
              children: res4.data[0].children ? res4.data[0].children[count] : []
            }
          }
          // count++
          if (res[0].children.length === count++) {
          if (res4.data[0].children > 0 && res4.data[0].children.length === count++) {
            count = 0
            LineSearchTopLeftData([item]).then(res => {
              res4 = res
              this.lineContent04 = {
                linename: res.data[0].linename,
                lineworkcont: res.data[0].lineworkcont,
                children: res.data[0].children[count]
                linename: res4.data[0].linename,
                lineworkcont: res4.data[0].lineworkcont,
                children: res4.data[0].children ? res4.data[0].children[count] : []
              }
            })
            // this.handleEveryLine(item, index)
          }
        }, 1000 * 6)
        }, res4.data[0].children && res4.data[0].children.length > 0 ? 1000 * 3 : 1000 * 10)
      }
    },
    // 在制订单table
    // 产线加工任务
    getTableDataRoll() {
      LineSearchBottomLeftData().then(res => {
        this.tableData = res.data
        const divData = this.$refs.tableData.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // divData.scrollTop += divData.scrollHeight / this.tableData.length
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            LineSearchBottomLeftData().then(res => {
              this.tableData = res.data
            })
          }
        }, this.tableData.length <= 10 ? 1000 * 6 : 100)
      })
      const divData = this.$refs.tableData.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        divData.scrollTop += 1
        // divData.scrollTop += divData.scrollHeight / this.tableData.length
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          LineSearchBottomLeftData().then(res => {
            this.tableData = res.data
          })
        }
      }, this.tableData.length <= 10 ? 1000 * 6 : 100)
    },
    // 产线产品数量排行滚动效果
    // 当日完工产品数量排行
    getTableDataRankRoll() {
      LineSearchTopRightData().then(res => {
        this.tableDataRank = res.data
        const divData = this.$refs.tableDataRank.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        setInterval(() => {
          // 元素自增距离顶部1像素
          // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            LineSearchTopRightData().then(res => {
              this.tableDataRank = res.data
            })
          }
        }, this.tableDataRank.length <= 10 ? 1000 * 6 : 100)
      })
      console.log(this.tableDataRank.length, 88)
      const divData = this.$refs.tableDataRank.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          LineSearchTopRightData().then(res => {
            this.tableDataRank = res.data
          })
        }
      }, this.tableDataRank.length <= 10 ? 1000 * 6 : 100)
    },
    // 获取echarts
    getEcharts() {
@@ -908,7 +891,8 @@
<style scoped lang="scss">
//$kbBorderColor: #3A0088;
$kbBorderColor: #09d8f2;
//$kbBorderColor: #09d8f2;
$kbBorderColor: rgba(9, 216, 242, 0.4);
$kbBackgroundColor: rgba(30, 33, 46, 0.6);
.kb_content {
  display: flex;
@@ -1162,6 +1146,10 @@
  width: 0;
}
::v-deep .cell {
  padding: 0 !important;
}
//
///* 定义keyframes动画,命名为blink*/
//@keyframes blink {
src/views/sbgl/sbqd.vue
@@ -186,7 +186,8 @@
            width="100"
          >
            <template slot-scope="{row}">
              <div>{{ row.operation_ration }}%</div>
              <div v-if=" parseFloat(row.operation_ration)===0">/</div>
              <div v-else>{{ row.operation_ration }}%</div>
            </template>
          </el-table-column>
          <el-table-column
@@ -1093,6 +1094,10 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-button--text{
  font-size: 14px ;
  cursor: pointer ;
}
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
  color: $main_color;
  cursor: pointer;
src/views/scgl/gd.vue
@@ -124,7 +124,7 @@
              <el-radio
                v-model="radioSelected"
                :label="row.wo_code"
                style="color: #fff;padding-left: 10px; margin-right: -25px;"
                style="color: transparent;padding-left: 10px; margin-right: -25px;"
                @change.native="getCurrentRow(row.wo_code)"
              />
            </template>
@@ -173,7 +173,12 @@
            label="产品规格"
            sortable="custom"
            width="110"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="plan_qty"
            label="工单数"
@@ -185,26 +190,46 @@
            label="生产车间"
            sortable="custom"
            width="120"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="route_name"
            label="工艺路线"
            sortable="custom"
            min-width="130"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.route_name">{{ row.route_name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="plan_startdate"
            label="计划开始时间"
            sortable="custom"
            width="160"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="plan_enddate"
            label="计划结束时间"
            sortable="custom"
            width="160"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.plan_enddate">{{ row.plan_enddate }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="piroque"
            label="工单等级"
@@ -215,6 +240,7 @@
              <div v-if="row.piroque==='1'">特级</div>
              <div v-if="row.piroque==='2'">紧急</div>
              <div v-if="row.piroque==='3'">正常</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
@@ -551,8 +577,15 @@
        <el-table-column
          prop="ng_qty"
          label="不良数量"
          fixed="right"
        />
        <el-table-column
          label="操作"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" style="padding: 0;" @click="supplementSmallClick(row)">补打</el-button>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
@@ -702,6 +735,70 @@
        </div>
      </span>
    </el-dialog>
    <!--打印预览页面  小标签-->
    <el-dialog
      title="预览"
      :visible.sync="dialogVisible2"
      width="1140"
      :close-on-click-modal="false"
      @close="dialogVisible2Close"
    >
      <!-- 要打印的区域 -->
      <div id="printMe2" style="padding: 30px;">
        <div
          style="display: flex;width: 250px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;"
        >
          <div style="width: 60px;display: flex;flex-direction: column;border-right: 1px solid #000">
            <div
              style="display: flex;height: 75%;border-bottom:1px solid #000;
              justify-content: center;align-items: center;position: relative"
            >
              <div id="qrCode2" ref="qrCodeDiv2" style="overflow-y: hidden;height: 50px;position: absolute;left: 4px" />
            </div>
            <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center">
              <div style="margin-left: 5px;width: 40px">数量:</div>
              {{ qrForm.startqty }}
            </div>
          </div>
          <div style="width:190px;display: flex;flex-direction: column">
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left"
            >
              <div style="width: 60px;margin-left: 5px;">工单编号:</div>
              <div>{{ qrForm.wo_code }}</div>
            </div>
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left"
            >
              <div style="width: 60px;margin-left: 5px;">产品编码:</div>
              <div>{{ qrForm.partcode }}</div>
            </div>
            <div
              style="display: flex;height: 25%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
            >
              <div style="width:60px;margin-left: 5px;">产品名称:</div>
              <div>{{ qrForm.partname }}</div>
            </div>
            <div style="display: flex;height: 25%;justify-content: flex-start;align-items: center;text-align: left">
              <div style="width: 60px;margin-left: 5px;">下道工序:</div>
              <div>{{ qrForm.nextstepname }}</div>
            </div>
          </div>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="dialogVisible2 = false">取 消</el-button>
          <el-button v-print="printObj2" type="primary">确 定</el-button>
        </div>
      </span>
    </el-dialog>
  </div>
</template>
@@ -864,7 +961,37 @@
        routename: '',
        lm_date: ''
      },
      number: ''
      number: '',
      dialogVisible2: false,
      printObj2: {
        id: 'printMe2',
        popTitle: '打印模板',
        preview: false,
        extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>',
        closeCallback(vue) { // 关闭打印的回调事件(无法确定点击的是确认还是取消)
          console.log('11212', vue)
          // vue.dialogVisible = false
          vue.dialogVisible2 = false
          // vue.dialogVisible = false
        },
        beforeOpenCallback(vue) {
          vue.printLoading = true
          console.log('打开之前')
          console.log()
        },
        openCallback(vue) {
          vue.printLoading = false
          console.log('执行了打印')
        }
      },
      qrForm: {
        qrvalue: '',
        startqty: '',
        wo_code: '',
        partcode: '',
        partname: '',
        nextstepname: ''
      }
    }
  },
  created() {
@@ -1324,6 +1451,52 @@
    supplementClick() {
      this.dialogVisibleTask = false
      this.handlePrint()
    },
    // 补打小标签
    supplementSmallClick(row) {
      // let obj = {}
      this.taskTableData.forEach((item, index) => {
        if (item.seq === row.seq) {
          console.log(item)
          this.qrForm = {
            qrvalue: item.seq === this.taskTableData.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.taskTableData[item.seq].stepcode,
            startqty: item.seq === this.taskTableData.length ? item.plan_qty : this.taskTableData[item.seq].plan_qty,
            wo_code: item.wo_code,
            partcode: item.partcode,
            partname: item.partname,
            nextstepname: item.seq === this.taskTableData.length ? item.stepname : this.taskTableData[item.seq].stepname
          }
          this.$nextTick(() => {
            console.log(this.qrForm.qrvalue, 3333)
            this.bindQRCode2(this.qrForm.qrvalue)
          })
        }
      })
      // this.dialogVisibleTask = false
      this.dialogVisible2 = true
      console.log(this.qrForm, 1111)
    },
    dialogVisible2Close() {
      this.qrForm.qrvalue = ''
      this.qrForm.startqty = ''
      this.qrForm.wo_code = ''
      this.qrForm.partcode = ''
      this.qrForm.partname = ''
      this.qrForm.nextstepname = ''
      // this.$refs.qrCodeDiv2 = ''
    },
    // 生成二维码
    bindQRCode2(text) {
      new QRCode(this.$refs.qrCodeDiv2, {
        text: text,
        width: 50,
        height: 50,
        colorDark: '#000', // 二维码颜色
        colorLight: '#ffffff', // 二维码背景色
        correctLevel: QRCode.CorrectLevel.L// 容错率,L/M/H
      })
    }
  }
src/views/scgl/scdd.vue
@@ -2,7 +2,7 @@
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
      <div class="bodyTopButtonGroup" style="justify-content: space-between">
        <el-button
          icon="el-icon-refresh-right"
          @click="syncERP"
@@ -154,10 +154,10 @@
          >
            <template slot-scope="{row}">
              <el-radio
                v-model="radioSelected"
                :label="row.wo"
                style="color: #fff;padding-left: 10px; margin-right: -25px;"
                @change.native="getCurrentRow(row.wo)"
                v-model="radioSelectedId"
                :label="row.id"
                style="color: transparent;padding-left: 15px; margin-right: -25px;"
                @change.native="getCurrentRow(row.id)"
              />
            </template>
          </el-table-column>
@@ -203,7 +203,12 @@
            label="产品规格"
            sortable="custom"
            min-width="110"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="qty"
            label="订单数量"
@@ -221,7 +226,12 @@
            label="生产车间"
            sortable="custom"
            width="150"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="planstartdate"
            label="预计开工时间"
@@ -239,7 +249,12 @@
            label="创建人员"
            sortable="custom"
            width="150"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.createuser">{{ row.createuser }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="createdate"
            label="创建时间"
@@ -418,9 +433,11 @@
      ],
      total: 10,
      radioSelected: '',
      radioSelectedId: '',
      tableData: [],
      dialogVisible: false,
      dialogForm: {
        erporderid: '',
        partname: '', // 产品名称
        partspec: '', // 产品规格
        // paystartdate: '', // 预计开工时间
@@ -563,16 +580,18 @@
      this.getErpOrderSearch()
    },
    // 单选框选中获取当前行信息
    getCurrentRow(wo) {
      this.radioSelected = wo
    getCurrentRow(id) {
      // console.log(row, 2)
      // this.radioSelected = row.wo
      this.radioSelectedId = id
    },
    // 订单关闭
    async orderClose() {
      if (this.radioSelected.length < 1) {
      if (this.radioSelectedId.length < 1) {
        return this.$message.info('请先选择订单!')
      }
      this.tableData.forEach(item => {
        if (item.wo === this.radioSelected) {
        if (item.id === this.radioSelectedId) {
          if (item.status !== 'NEW') {
            return this.$message.info('此订单非新订单,无法关闭!')
          } else {
@@ -581,7 +600,7 @@
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              ClosedErpOrder({ erpordercode: this.radioSelected }).then(res => {
              ClosedErpOrder({ erpordercode: item.wo, erporderid: this.radioSelectedId }).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单关闭成功!')
                  this.getErpOrderSearch()
@@ -606,6 +625,7 @@
      this.dialogVisible = true
      this.$nextTick(() => {
        this.dialogForm.erporderid = row.id
        this.dialogForm.erporderstus = row.status
        this.dialogForm.erpordercode = row.wo
        this.dialogForm.partcode = row.partcode
@@ -656,6 +676,7 @@
      this.$refs.dialogForm.validate(valid => {
        if (valid) {
          const data = {
            'erporderid': this.dialogForm.erporderid,
            // 'erporderstus': this.dialogForm.erporderstus,
            'erpordercode': this.dialogForm.erpordercode,
            'partcode': this.dialogForm.partcode,
src/views/scgl/sckbg.vue
@@ -85,7 +85,7 @@
              />
              <el-table-column
                prop="partname"
                min-width="110"
                min-width="160"
                label="产品名称"
                sortable="custom"
              />
@@ -95,12 +95,17 @@
                min-width="80"
                sortable="custom"
              />
              <el-table-column
                prop="descr"
                label="工序描述"
                min-width="150"
                sortable="custom"
              />
              <!--              <el-table-column-->
              <!--                prop="descr"-->
              <!--                label="工序描述"-->
              <!--                min-width="150"-->
              <!--                sortable="custom"-->
              <!--              >-->
              <!--                <template slot-scope="{row}">-->
              <!--                  <div v-if="row.descr">{{ row.descr }}</div>-->
              <!--                  <div v-else>/</div>-->
              <!--                </template>-->
              <!--              </el-table-column>-->
              <el-table-column
                prop="plan_qty"
                label="任务数量"
@@ -108,8 +113,17 @@
                sortable="custom"
              />
              <el-table-column
                label="未报工数量"
                width="120"
              >
                <!--                sortable="custom"-->
                <template slot-scope="{row}">
                  <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="good_qty"
                label="已报工数量(良品)"
                label="已报工数量"
                sortable="custom"
                width="160"
              />
@@ -117,7 +131,12 @@
                prop="ng_qty"
                label="不良数量"
                width="150"
                sortable="custom"
              />
              <el-table-column
                prop="bad_qty"
                label="已报废数量"
                width="120"
                sortable="custom"
              />
              <el-table-column
@@ -125,8 +144,19 @@
                label="计划开工日期"
                width="185"
                sortable="custom"
                fixed="right"
              />
              <el-table-column
                prop="plan_enddate"
                label="计划完工日期"
                width="185"
                sortable="custom"
                fixed="right"
              >
                <template slot-scope="{row}">
                  <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
                  <div v-else>/</div>
                </template>
              </el-table-column>
              <!--              <el-table-column-->
              <!--                label="操作"-->
              <!--                width="150"-->
@@ -248,7 +278,7 @@
              <el-table-column
                prop="partname"
                label="产品名称"
                min-width="110"
                min-width="160"
                sortable="custom"
              />
              <el-table-column
@@ -257,12 +287,17 @@
                min-width="80"
                sortable="custom"
              />
              <el-table-column
                prop="descr"
                label="工序描述"
                min-width="150"
                sortable="custom"
              />
              <!--              <el-table-column-->
              <!--                prop="descr"-->
              <!--                label="工序描述"-->
              <!--                min-width="150"-->
              <!--                sortable="custom"-->
              <!--              >-->
              <!--                <template slot-scope="{row}">-->
              <!--                  <div v-if="row.descr">{{ row.descr }}</div>-->
              <!--                  <div v-else>/</div>-->
              <!--                </template>-->
              <!--              </el-table-column>-->
              <el-table-column
                prop="plan_qty"
                label="任务数量"
@@ -270,8 +305,17 @@
                sortable="custom"
              />
              <el-table-column
                label="未报工数量"
                width="120"
              >
                <!--                sortable="custom"-->
                <template slot-scope="{row}">
                  <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="good_qty"
                label="已收料数量(良品)"
                label="已收料数量"
                sortable="custom"
                width="160"
              />
@@ -282,12 +326,29 @@
                sortable="custom"
              />
              <el-table-column
                prop="bad_qty"
                label="已报废数量"
                min-width="120"
                sortable="custom"
              />
              <el-table-column
                prop="plan_startdate"
                label="计划开工日期"
                width="185"
                sortable="custom"
                fixed="right"
              />
              <el-table-column
                prop="plan_enddate"
                label="计划完工日期"
                width="185"
                sortable="custom"
                fixed="right"
              >
                <template slot-scope="{row}">
                  <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
                  <div v-else>/</div>
                </template>
              </el-table-column>
              <!--              <el-table-column-->
              <!--                label="操作"-->
              <!--                width="150"-->
@@ -311,6 +372,113 @@
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getMesOrderStepSearch"
          />
        </el-tab-pane>
        <el-tab-pane label="不良待处理列表">
          <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between">
            <div style="display: flex;align-items: center">
              <div style="width: 90px">扫描条码:</div>
              <!--              oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"-->
              <el-input
                v-model="badForm.orderstepqrcode"
                name="badProduceCode"
                style="width: 300px"
                @keyup.enter.native="val=>enterNative(val,'badProduceCode')"
              />
            </div>
          </div>
          <el-divider />
          <div class="elTableDiv">
            <el-table
              :data="badTableData"
              :height="isIpad? (tableHeight+50):tableHeight"
              border
              :row-class-name="tableRowClassName"
              :style="{width: 100+'%',height:tableHeight+'px',}"
              highlight-current-row
              :header-cell-style="this.$headerCellStyle"
              :cell-style="this.$cellStyle"
              @sort-change="badSortChange"
            >
              <el-table-column
                prop="RowNum"
                width="50"
                label="序号"
                fixed
              />
              <el-table-column
                prop="wo_code"
                label="工单号"
                min-width="160"
                sortable="custom"
              />
              <el-table-column
                prop="partcode"
                label="产品编码"
                min-width="110"
                sortable="custom"
              />
              <el-table-column
                prop="partname"
                min-width="160"
                label="产品名称"
                sortable="custom"
              />
              <el-table-column
                prop="stepname"
                label="工序"
                min-width="80"
                sortable="custom"
              />
              <el-table-column
                prop="plan_qty"
                label="任务数量"
                min-width="110"
                sortable="custom"
              />
              <el-table-column
                prop="good_qty"
                label="已报工数量"
                sortable="custom"
                min-width="160"
              />
              <el-table-column
                prop="ng_qty"
                label="不良数量"
                min-width="150"
                sortable="custom"
              />
              <el-table-column
                prop="bad_qty"
                label="已报废数量"
                min-width="120"
                sortable="custom"
              />
              <el-table-column
                label="操作"
                width="120"
                fixed="right"
              >
                <template slot-scope="{row}">
                  <div class="operationClass">
                    <el-button type="text" @click="repairHandle(row)">维修处理</el-button>
                  </div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <!--分页-->
          <pagination
            :total="badTotal"
            :page.sync="badForm.page"
            :limit.sync="badForm.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getBadList"
          />
        </el-tab-pane>
      </el-tabs>
@@ -349,7 +517,7 @@
        <el-form-item label="当前工序:">
          <div style="width: 200px">{{ dialogForm.stepname }}</div>
        </el-form-item>
        <el-form-item label="工序描述:">
        <el-form-item v-if="false" label="工序描述:">
          <!--          <el-tooltip   class="item" effect="dark" content="原材料切按材料切按材料切按时打卡数据的卡" placement="top-start">-->
          <div style="width: 200px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;">
            {{ dialogForm.stepdesc }}
@@ -662,6 +830,7 @@
      title="预览"
      :visible.sync="dialogVisible2"
      width="1140"
      top="10vh"
      :close-on-click-modal="false"
      @close="dialogVisible2Close"
    >
@@ -719,6 +888,155 @@
      </span>
    </el-dialog>
    <!--    不良处理列表对话框-->
    <el-dialog
      title="维修处理"
      :visible.sync="badDialogVisible"
      width="990px"
      class="badDialogVisible"
      top="10vh"
      :close-on-click-modal="false"
      @close="handleCloseBad"
      @closed="handleCloseBad"
    >
      <el-form
        inline
        :model="badDialogForm"
        label-width="110px"
      >
        <el-form-item label="工单编号:">
          <div style="width: 200px">{{ badDialogForm.wo_code }}</div>
        </el-form-item>
        <el-form-item label="产品编码:">
          <div style="width: 200px">{{ badDialogForm.partcode }}</div>
        </el-form-item>
        <el-form-item label="产品名称:">
          <div style="width: 200px">{{ badDialogForm.partname }}</div>
        </el-form-item>
        <el-form-item label="产品规格:">
          <div style="width: 200px">{{ badDialogForm.partspec }}</div>
        </el-form-item>
        <el-form-item label="当前工序:">
          <div style="width: 200px">{{ badDialogForm.stepname }}</div>
        </el-form-item>
        <el-form-item label="下道工序:">
          <div style="width: 200px">{{ badDialogForm.nextstepname }}</div>
        </el-form-item>
        <el-form-item label="任务数量:">
          <div style="width: 200px">{{ badDialogForm.plan_qty }}</div>
        </el-form-item>
        <el-form-item label="报工数量:">
          <div style="width: 200px">{{ badDialogForm.good_qty }}</div>
        </el-form-item>
        <el-form-item label="不良数量:">
          <div style="width: 200px">{{ badDialogForm.ng_qty }}</div>
        </el-form-item>
      </el-form>
      <div style="margin-bottom:20px">
        <i class="el-icon-s-operation" style="color:#42b983;" /> 不良信息明细:
      </div>
      <div class="elTableDiv">
        <el-table
          :data="badTableDataDialog"
          :height="isIpad? (tableHeight-350):(tableHeight-400)"
          border
          :row-class-name="tableRowClassName"
          :style="{width: 100+'%',height:(tableHeight-400)+'px',}"
          highlight-current-row
          :header-cell-style="this.$headerCellStyle"
          :cell-style="this.$cellStyle"
        >
          <el-table-column
            type="index"
            width="50"
            label="序号"
            fixed
          />
          <el-table-column
            prop="step_code"
            label="工序编码"
            min-width="80"
          />
          <el-table-column
            prop="stepname"
            label="工序名称"
            min-width="80"
          />
          <el-table-column
            prop="plan_qty"
            label="任务数量"
            width="80"
          />
          <el-table-column
            label="报工数量"
            width="80"
            prop="report_qty"
          />
          <el-table-column
            prop="ng_qty"
            label="不良数量"
            width="80"
          />
          <el-table-column
            prop="badqty"
            label="已报废数量"
            width="100"
          />
          <el-table-column
            prop="defect_name"
            label="不良原因"
            show-tooltip-when-overflow
            width="80"
          />
          <el-table-column
            prop="repair_qty"
            label="维修数量"
            width="90"
          >
            <template slot-scope="{row}">
              <!--              {{ row.repair_qty }}-->
              <div v-if="row.isVisible===0">{{ row.repair_qty }}</div>
              <el-input v-if="row.isVisible===1" v-model="row.repair_qty" oninput="value=value.replace(/[^0-9]/g,'')" />
            </template>
          </el-table-column>
          <el-table-column
            prop="bad_qty"
            label="报废数量"
            width="90"
          >
            <!--            oninput="value=value.replace(/[0-9]/g,'')"-->
            <template slot-scope="{row}">
              <div v-if="row.isVisible===0">{{ row.bad_qty }}</div>
              <el-input v-if="row.isVisible===1" v-model="row.bad_qty" oninput="value=value.replace(/[^0-9]/g,'')" />
            </template>
          </el-table-column>
          <el-table-column
            label="操作"
            width="100"
          >
            <template slot-scope="{row}">
              <div class="operationClass">
                <el-button v-if="row.isVisible===0" type="text" @click="badEdit(row)">编辑</el-button>
                <el-button v-if="row.isVisible===0" type="text" @click="badDel(row)">删除</el-button>
                <el-button v-if="row.isVisible===1" type="text" @click="badSave(row)">确认</el-button>
                <el-button v-if="row.isVisible===1" type="text" @click="badCancel(row)">取消</el-button>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="badDialogVisibleCancel">取 消</el-button>
          <el-button type="primary" @click="badDialogVisibleConfirm ">保 存/打 印</el-button>
        </div>
      </span>
    </el-dialog>
  </div>
</template>
@@ -738,7 +1056,7 @@
  MesOrderStepSelectCause,
  SavaMesOrderStepIn,
  SavaMesOrderStepStart,
  SavaMesOrderStepReport
  SavaMesOrderStepReport, MesOrderNgStepSearch, MesOrderNgSubStepSearch, EditOrderNgStepSeave
} from '@/api/scgl'
import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
import QRCode from 'qrcodejs2'
@@ -902,14 +1220,28 @@
          console.log('执行了打印')
        }
      },
      qrForm: {
      qrForm: { // 打印内容
        qrvalue: '',
        startqty: '',
        wo_code: '',
        partcode: '',
        partname: '',
        nextstepname: ''
      }
        nextstepname: '',
        operator: '', // 操作人
        operatorTime: ''// 操作时间
      },
      badForm: {
        orderstepqrcode: '', // 扫描的二维码
        prop: 'wo_code',
        order: 'asc',
        page: 1,
        rows: 20
      },
      badTableData: [], // 不良处理列表table数据
      badTotal: 0,
      badDialogVisible: false,
      badDialogForm: {},
      badTableDataDialog: []// 不良对话框table表格
    }
  },
  // computed: {
@@ -984,6 +1316,18 @@
      this.WXform.prop = prop
      this.getMesOrderWxStepSearch()
    },
    badSortChange({ column, prop, order }) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
        order = 'asc'
      } else {
        order = 'desc'
      }
      this.badForm.order = order
      this.badForm.prop = prop
      this.getBadList()
    },
    // 自制页签原点点击
    getCurrentRow(val) {
@@ -1007,6 +1351,13 @@
          this.getMesOrderWxStepSearch()
          $("input[name='WXproduceCode']")[0].focus()
          this.form.orderstepqrcode = ''
        })
      }
      if (this.$refs.elTabs.currentName === '2') {
        this.$nextTick(() => {
          this.getBadList()
          $("input[name='badProduceCode']")[0].focus()
          this.badForm.orderstepqrcode = ''
        })
      }
    },
@@ -1047,6 +1398,13 @@
        if (res.code === '200' && res.count === 3) {
          await this.WXback(res.data)
        }
      }
      if (belong === 'badProduceCode') {
        // this.badForm.orderstepqrcode=
        await this.getBadList()
        await this.repairHandle(this.badForm.orderstepqrcode)
        this.badDialogVisible = true
      }
    },
    // 查询
@@ -1322,6 +1680,10 @@
      this.dialogForm.startqtySum = '' // 不能超过的数值
      this.dialogForm.nextstepcode = '' // 下道工序编码
      this.userTableData = [] // 人员列表
      this.$refs.dialogForm.clearValidate()
    },
    // 对话框取消
@@ -1383,9 +1745,12 @@
            }
            SavaMesOrderStepIn(data).then(res => {
              if (res.code === '200') {
                this.WXprint2()
                this.$message.success('收料成功!')
                this.dialogVisible = false
                if (this.dialogForm.nextstepcode !== '') {
                  this.WXprint2()
                }
                this.dialogVisible2 = true
                this.tabClick()
              } else {
@@ -1428,7 +1793,13 @@
                return this.$message.info('请选择不良原因!')
              }
            }
            // this.userTableData = [...new Set(this.userTableData)]// 数组去重
            this.userTableData = this.userTableData.filter(item => item.usercode !== '')
            // 数组中对象相同的去重
            this.userTableData = this.userTableData.filter((currentValue, currentIndex, selfArr) => {
              return selfArr.findIndex(item => item.usercode === currentValue.usercode) === currentIndex
            })
            // console.log(this.userTableData, 1)
            const reportuser = this.userTableData.map(item => item.usercode).join(';')
            const data = {
              mesordercode: this.dialogForm.wo_code, // 工单编号
@@ -1449,9 +1820,13 @@
            SavaMesOrderStepReport(data).then(res => {
              if (res.code === '200') {
                this.ZZprint2()
                this.$message.success('报工成功!')
                this.dialogVisible = false
                console.log(this.dialogForm.nextstepcode, 1)
                if (this.dialogForm.nextstepcode !== '') {
                  this.ZZprint2()
                }
                this.dialogVisible2 = true
                this.tabClick()
              } else {
@@ -1519,6 +1894,181 @@
          this.tableHeight = this.tableHeight - 50
        }
      })
    },
    // 获取不良处理列表
    async getBadList() {
      const res = await MesOrderNgStepSearch(this.badForm)
      this.badTableData = res.data
      this.badTotal = res.count
    },
    badDialogVisibleCancel() {
      this.badDialogVisible = false
    },
    badDialogVisibleConfirm() {
      const data = {
        Data: this.badTableDataDialog
      }
      // console.log(JSON.stringify(data), 1)
      // this.badPrint()
      // this.dialogVisible2 = true
      EditOrderNgStepSeave(data).then(res => {
        if (res.code === '200' || res.code === '301') {
          this.getBadList()
          this.badDialogVisible = false
          return this.$message.success('保存成功!')
        }
      })
    },
    badPrint() {
      this.qrForm.qrvalue = this.badDialogForm.wo_code + ';' + this.badDialogForm.nextstepcode
      this.qrForm.startqty = this.badDialogForm.plan_qty
      this.qrForm.wo_code = this.badDialogForm.wo_code
      this.qrForm.partcode = this.badDialogForm.partcode
      this.qrForm.partname = this.badDialogForm.partname
      this.qrForm.nextstepname = this.badDialogForm.nextstepname
      this.$nextTick(() => {
        this.bindQRCode(this.qrForm.qrvalue)
      })
    },
    handleCloseBad() {
      this.badDialogForm = {}
      this.badTableDataDialog = []
    },
    // 点击维修处理按钮
    async repairHandle(row) {
      console.log(row)
      let data
      if (row.wo_code) {
        data = {
          orderstepqrcode: row.wo_code + ';' + row.stepcode
        }
      } else {
        data = {
          orderstepqrcode: row
        }
      }
      const { data: res } = await MesOrderNgSubStepSearch(data)
      this.$nextTick(() => {
        this.badDialogForm.wo_code = res.data1.wo_code
        this.badDialogForm.partcode = res.data1.partnumber
        this.badDialogForm.partname = res.data1.partname
        this.badDialogForm.partspec = res.data1.partspec
        this.badDialogForm.stepname = res.data1.stepname
        this.badDialogForm.nextstepcode = res.data1.nextstepcode
        this.badDialogForm.nextstepname = res.data1.nextstepname
        this.badDialogForm.plan_qty = res.data1.planqty
        this.badDialogForm.good_qty = res.data1.noreportqty // 报工数量
        this.badDialogForm.ng_qty = res.data1.noputqty // 不良数量
        this.badTableDataDialog = res.data2
        this.badTableDataDialog.forEach(item => {
          item.repair_qty = 0
          item.bad_qty = 0
          item.isVisible = 0
        })
        console.log(this.badTableDataDialog, 321)
        this.badDialogVisible = true
      })
    },
    badEdit(row) {
      console.log(row)
      this.badTableDataDialog.forEach((item, index) => {
        if (item.id === row.id && item.m_id === row.m_id) {
          this.badTableDataDialog.splice(index, 1, {
            bad_qty: row.bad_qty,
            repair_qty: row.repair_qty,
            isVisible: 1,
            defect_code: row.defect_code,
            defect_name: row.defect_name,
            badqty: row.badqty,
            id: row.id,
            m_id: row.m_id,
            materiel_code: row.materiel_code,
            ng_qty: row.ng_qty,
            plan_qty: row.plan_qty,
            report_qty: row.report_qty,
            seq: row.seq,
            step_code: row.step_code,
            stepname: row.stepname,
            style: row.style,
            wo_code: row.wo_code
          })
        }
      })
    },
    badSave(row) {
      console.log(row, 1)
      // console.log(parseFloat(row.bad_qty) + parseFloat(row.repair_qty), 2)
      // console.log(parseFloat(row.ng_qty), 2)
      // console.log(parseFloat(row.bad_qty) + parseFloat(row.repair_qty) > parseFloat(row.ng_qty), 2)
      if (parseFloat(row.bad_qty) + parseFloat(row.repair_qty) > parseFloat(row.ng_qty)) {
        this.badCancel(row)
        return this.$message.info('维修数量与报废数量之和不能大于不良数量!')
      }
      this.badTableDataDialog.forEach((item, index) => {
        if (item.id === row.id && item.m_id === row.m_id) {
          this.badTableDataDialog.splice(index, 1, {
            bad_qty: row.bad_qty,
            repair_qty: row.repair_qty,
            isVisible: 0,
            defect_code: row.defect_code,
            defect_name: row.defect_name,
            id: row.id,
            m_id: row.m_id,
            badqty: row.badqty,
            materiel_code: row.materiel_code,
            ng_qty: row.ng_qty,
            plan_qty: row.plan_qty,
            report_qty: row.report_qty,
            seq: row.seq,
            step_code: row.step_code,
            stepname: row.stepname,
            style: row.style,
            wo_code: row.wo_code
          })
        }
      })
    },
    badCancel(row) {
      this.badTableDataDialog.forEach((item, index) => {
        if (item.id === row.id && item.m_id === row.m_id) {
          this.badTableDataDialog.splice(index, 1, {
            // bad_qty: row.bad_qty,
            // repair_qty: row.repair_qty,
            bad_qty: 0,
            repair_qty: 0,
            isVisible: 0,
            defect_code: row.defect_code,
            defect_name: row.defect_name,
            id: row.id,
            m_id: row.m_id,
            badqty: row.badqty,
            materiel_code: row.materiel_code,
            ng_qty: row.ng_qty,
            plan_qty: row.plan_qty,
            report_qty: row.report_qty,
            seq: row.seq,
            step_code: row.step_code,
            stepname: row.stepname,
            style: row.style,
            wo_code: row.wo_code
          })
        }
      })
    },
    badDel(row) {
      this.badTableDataDialog.forEach((item, index) => {
        if (item.id === row.id && item.m_id === row.m_id) {
          this.badTableDataDialog.splice(index, 1)
        }
      })
    }
  }
}
@@ -1526,10 +2076,11 @@
<style lang="scss" scoped>
$main_color: #42b983;
.el-button--text{
.el-button--text {
  font-size: 14px;
  cursor: pointer;
}
.operationClass {
  height: 23px;
  display: flex;
@@ -1575,13 +2126,20 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
::v-deep .el-button--text {
  font-size: 14px;
  cursor: pointer;
}
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline{
.el-icon-edit-outline {
  margin-right: 15px;
}
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
@@ -1616,6 +2174,10 @@
  padding: 20px 20px !important;
}
::v-deep .badDialogVisible .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
  display: flex;
  justify-content: flex-end;
@@ -1639,8 +2201,8 @@
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td{
  background-color: #eaecef ;
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
src/views/template.vue
@@ -1,7 +1,12 @@
<template>
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <div style="padding: 10px 5px 0 0">
      <div class="bodyTopButtonGroup">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button icon="el-icon-upload2" @click="upload">导入</el-button>
      </div>
      <div class="bodyTopFormGroup">
        <el-form
          ref="form"
          :model="form"
@@ -36,18 +41,13 @@
          </div>
        </el-form>
      </div>
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
      </div>
      <el-divider />
      <div class="elTableDiv">
        <el-table
          :data="tableData"
          :height="tableHeight+'px'"
          border
          stripe
          :row-class-name="tableRowClassName"
          :style="{width: 100+'%',height:tableHeight+'px',}"
          highlight-current-row
          :header-cell-style="this.$headerCellStyle"
@@ -116,7 +116,6 @@
      </div>
      <!--分页-->
      <pagination
        v-show="total>0"
        :total="total"
        :page.sync="form.page"
        :limit.sync="form.rows"
@@ -361,34 +360,61 @@
        this.mainHeight = window.innerHeight - 250
        this.tableHeight = this.mainHeight - 100
      })
    },
    tableRowClassName({ row, rowIndex }) {
      return 'custom-row'
    }
  }
}
</script>
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-button--primary {
  background-color: $main_color !important;
  height: 30px;
  display: flex;
  align-items: center;
  //border: 1px solid $main_color;
  border: none;
  padding: 0 20px;
::v-deep .el-button--text{
  font-size: 14px ;
  cursor: pointer ;
}
::v-deep .el-button--primary:hover {
  border: none;
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
  color: $main_color;
  cursor: pointer;
}
::v-deep .el-button--info {
  height: 30px;
  display: flex;
  align-items: center;
  padding: 0 20px;
.el-icon-edit-outline{
  margin-right: 15px;
}
::v-deep .el-pagination.is-background .el-pager li:not(.disabled).active {
  background-color: $main_color !important;
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
  align-items: center;
  padding: 0 15px;
}
::v-deep .el-button--primary {
  //background-color: $main_color !important;
}
::v-deep .el-button--default {
  background-color: #f8f8fa;
  border: none;
}
::v-deep .el-input__inner {
  height: 34px;
  line-height: 34px;
  //color: #a7a7a7;
}
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
::v-deep .dialogVisibleRoles .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .importPickerClass .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
@@ -396,105 +422,30 @@
  justify-content: flex-end;
}
.footerButton {
  display: flex;
  justify-content: end;
}
::v-deep .el-button--default {
  background-color: #ffffff !important;
  height: 30px;
  display: flex;
  align-items: center;
  padding: 0 20px;
}
::v-deep .el-button--default:hover {
  color: #606266;
}
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
::v-deep .el-radio__input.is-checked .el-radio__inner {
  background-color: $main_color;
  border-color: $main_color;
}
::v-deep .el-radio__input.is-checked + .el-radio__label {
  color: $main_color !important;
}
::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
  border-color: $main_color;
  background-color: $main_color;
}
::v-deep .el-input__inner {
  height: 30px;
  line-height: 30px;
}
::v-deep .el-input__inner:focus {
  border-color: $main_color;
}
::v-deep .el-table .caret-wrapper {
  transform: scale(0.8);
}
::v-deep .cell {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
}
::v-deep .el-button--text {
  color: $main_color;
  font-size: 14px;
  cursor: pointer;
}
.operationClass {
  height: 23px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  justify-content: space-between;
}
.el-icon-share {
  color: $main_color;
  cursor: pointer;
::v-deep .el-table::before {
  height: 0;
}
.el-checkbox.is-bordered.is-checked {
  border-color: $main_color;
::v-deep .el-table__body-wrapper {
  background-color: #f8f8fa;
}
::v-deep .el-radio__input.is-checked .el-radio__inner {
  border-color: $main_color;
  background: $main_color;
::v-deep .el-table__body .el-table__row.hover-row td{
  background-color: #eaecef ;
}
::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner {
  border-color: $main_color;
  background: $main_color;
}
::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
  color: $main_color !important;
}
::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered {
  margin: 10px 30px 0px 0;
}
::v-deep .el-radio__input.is-checked + .el-radio__label {
  color: $main_color;
}
::v-deep .el-radio.is-bordered + .el-radio.is-bordered {
  margin: 10px 30px 0px 0;
::v-deep .el-form--inline .el-form-item__label {
  color: #a7a7a7;
}
.body ::v-deep .el-divider {
@@ -507,26 +458,14 @@
  margin-bottom: 0;
}
::v-deep .el-input__inner:focus {
  border-color: $main_color;
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
::v-deep .el-select .el-input__inner:focus{
  border-color: $main_color;
}
</style>
<style>
::v-deep .el-select-dropdown__item.selected{
  color: $main_color;
}
::v-deep .el-checkbox__inner:hover{
  border-color: $main_color;
}
::v-deep .el-textarea__inner:focus{
  border-color: $main_color;
}
::v-deep .el-select .el-input .el-select__caret {
  display: flex;
  align-items: center;
  justify-content: center;
.el-table .custom-row {
  background: #f8f8fa;
}
</style>
src/views/wlgl/ckdy.vue
@@ -76,7 +76,12 @@
            prop="description"
            label="仓库描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.description">{{ row.description }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
src/views/wlgl/kwdy.vue
@@ -88,7 +88,12 @@
            prop="description"
            label="库位描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.description">{{ row.description }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="stock_name"
            label="所属仓库"
src/views/zlgl/gxjybz.vue
@@ -67,7 +67,12 @@
            prop="descr"
            label="标准描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.descr">{{ row.descr }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
src/views/zlgl/gxjyxm.vue
@@ -67,7 +67,12 @@
            prop="descr"
            label="项目描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.descr">{{ row.descr }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
src/views/zlgl/qxdy.vue
@@ -68,7 +68,12 @@
            prop="descr"
            label="缺陷描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.descr">{{ row.descr }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
src/views/zzmx/chda.vue
@@ -139,7 +139,12 @@
            label="物料规格"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="uom_name"
            label="单位"
@@ -162,19 +167,34 @@
            label="仓库名称"
            sortable="custom"
            min-width="110"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.stck_name">{{ row.stck_name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="maxqty"
            label="库存上限"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.maxqty">{{ row.maxqty }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="minqty"
            label="库存下限"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.minqty">{{ row.minqty }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
@@ -507,8 +527,9 @@
        <el-select
          v-model="defaultroute_code"
          filterable
          style="width: 200px"
          style="width: 200px;"
          placeholder="请选择"
          class="defaultroute_code"
        >
          <el-option
            v-for="item in defaultroute_codeArr"
@@ -1228,6 +1249,13 @@
    }
  }
}
.defaultroute_code ::v-deep .el-input__suffix-inner{
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: -3px;
}
</style>
<!--公共页面样式-->
src/views/zzmx/gxdy.vue
@@ -116,7 +116,12 @@
            label="工序描述"
            min-width="180"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.descr">{{ row.descr }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="enable"
            label="启用状态"
@@ -124,8 +129,8 @@
            width="110"
          >
            <template slot-scope="{row}">
              <div v-if="row.enable==='Y'">是</div>
              <div v-if="row.enable==='N'">否</div>
              <div v-if="row.enable==='Y'"><svg-icon icon-class="circleYes" style="margin-right: 2px" />是</div>
              <div v-if="row.enable==='N'"> <svg-icon icon-class="circleNo" style="margin-right: 2px" />否</div>
            </template>
          </el-table-column>
          <el-table-column
src/views/zzmx/gylx.vue
@@ -72,15 +72,26 @@
            prop="description"
            label="工艺路线描述"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.description">{{ row.description }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="enable"
            label="使用状态"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.enable==='Y'">是</div>
              <div v-if="row.enable==='N'">否</div>
              <div v-if="row.enable==='Y'">
                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
                是
              </div>
              <div v-if="row.enable==='N'">
                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
                否
              </div>
            </template>
          </el-table-column>
          <el-table-column
@@ -102,7 +113,11 @@
            <template slot-scope="{row}">
              <div class="operationClass">
                <el-tooltip class="item" effect="dark" content="预览" placement="top">
                  <i class="el-icon-view" style="margin-right:15px;cursor: pointer;color:#42b983  " @click="edit('edit',row)" />
                  <i
                    class="el-icon-view"
                    style="margin-right:15px;cursor: pointer;color:#42b983  "
                    @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)" />
@@ -161,7 +176,12 @@
            </el-select>
          </el-form-item>
          <el-form-item label="工艺描述" prop="description">
            <el-input v-model="dialogForm.description" :disabled="operation==='edit'" type="textarea" style="width: 220px" />
            <el-input
              v-model="dialogForm.description"
              :disabled="operation==='edit'"
              type="textarea"
              style="width: 220px"
            />
          </el-form-item>
        </div>
        <el-form-item label="工艺设置" prop="Data" style="margin-top: 30px">
@@ -178,7 +198,7 @@
                    zIndex:tag.label===selectedName?0:2
                  }"
                >
                  {{ index+1 }}
                  {{ index + 1 }}
                </div>
                <!--                <el-tooltip-->
@@ -368,7 +388,7 @@
      }
    },
    // 工艺设置 下拉获取所有
    async  getStepSelectArr() {
    async getStepSelectArr() {
      const { data: res } = await StepSelect()
      this.routeArr = res
    },
@@ -498,7 +518,13 @@
      if (this.clickSelected === '' || this.clickSelected === this.dynamicTags.length) {
        seq = this.dynamicTags.length + 1
        this.dynamicTags.push(
          { editDisabled: true, seq: seq, stepname: '', effect: 'light', stepcode: ('Step' + (seq.toString().length === 2 ? seq : '0' + seq)) }
          {
            editDisabled: true,
            seq: seq,
            stepname: '',
            effect: 'light',
            stepcode: ('Step' + (seq.toString().length === 2 ? seq : '0' + seq))
          }
        )
      } else {
        // 2.第二种情况   当选中某个tag   将在tag后面添加
@@ -565,7 +591,7 @@
      this.getStepSelectArr()
    },
    // 工艺路线预览
    async  edit(operation, row) {
    async edit(operation, row) {
      this.operation = operation
      this.dialogVisible = true
@@ -751,8 +777,9 @@
  border-radius: 0;
  color: $main_color;
}
::v-deep .el-button--success:disabled {
  background-color:#eeeeee;
  background-color: #eeeeee;
  color: $main_color;
}
@@ -786,8 +813,8 @@
  white-space: nowrap;
}
.autocompleteClass{
  .el-autocomplete-suggestion li{
.autocompleteClass {
  .el-autocomplete-suggestion li {
    //color: red;
  }
}
@@ -796,11 +823,12 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline{
.el-icon-edit-outline {
  margin-right: 15px;
}
@@ -861,8 +889,8 @@
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td{
  background-color: #eaecef ;
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
@@ -878,6 +906,7 @@
.body ::v-deep .el-form-item {
  margin-bottom: 0;
}
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
src/views/zzmx/jpgj.vue
@@ -134,7 +134,12 @@
            label="产品规格"
            min-width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="wksp_name"
            label="生产车间"
@@ -164,13 +169,23 @@
            label="设备节拍"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.eqp_value">{{ row.eqp_value }} <span style="margin-left: 2px">秒</span></div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="stand_value"
            label="生产节拍"
            width="110"
            sortable="custom"
          />
          >
            <template slot-scope="{row}">
              <div v-if="row.stand_value">{{ row.stand_value }} <span style="margin-left: 2px">秒</span></div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="cavity_qty"
            label="型腔数"