zouyu
2024-03-13 ae294a7a11d3e74e0650dcd48c6a53aab88c5a85
Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before
已修改6个文件
已添加2个文件
479 ■■■■ 文件已修改
src/api/quality/finishedDelivery.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/warehouse/finishedOutcome.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/index.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/technology-form.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/product/producttraceability/index.vue 227 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/FinishedGoods/index.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouse/FinishedWarehousing/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/quality/finishedDelivery.js
@@ -6,4 +6,4 @@
    method: 'get',
    params: query
  })
}
}
src/api/warehouse/finishedOutcome.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
import request from '@/router/axios'
export function finishedOutcome(query) {
    return request({
      url: '/mes/finishedOutcome/page',
      method: 'get',
      params: query
    })
  }
src/views/plan/customerorder/index.vue
@@ -57,6 +57,12 @@
            @click="() => (exportDialogVisible = true)"
            >导出台账</el-button
          >
          <!-- <el-button
            style="margin-left: 10px"
            type="primary"
            @click="() => ($refs.technology.init())"
            >编写技术交底单</el-button
          > -->
        </template>
      </ttable>
      <!-- å¼¹çª—, æ—¥æœŸé€‰æ‹© -->
@@ -347,6 +353,7 @@
        ></el-table-column>
      </el-table>
    </el-dialog>
    <technology-form ref="technology"></technology-form>
  </div>
</template>
@@ -358,6 +365,7 @@
} from '@/api/plan/customerOrderInterrelated'
import ConfirmPullCustomerorder from './confirm-pull-customerorder'
import TableForm from './customerorder-form'
import TechnologyForm from './technology-form.vue'
import TableFormDEesc from './customerorder-form-desc'
import SampleTableForm from './sample-customerorder-form'
import { mapGetters } from 'vuex'
@@ -400,6 +408,7 @@
      interrelatedOrderId: null,
      interrelatedOrderData: [],
      showInterrelatedOrderDialog: false,
      technologyDialog:true,
      uniqueStateArr: [],
      dataForm: {
        selectTime: null,
@@ -963,6 +972,7 @@
    SalesPartBatchDialog,
    TableFormDEesc,
    CustomerorderReturnDialog,
    TechnologyForm,
  },
  computed: {
    ...mapGetters(['permissions']),
src/views/plan/customerorder/technology-form.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
<template>
    <el-dialog
      top="10vh"
      width="80%"
      title="编写技术交底单"
      :close-on-click-modal="false"
      :visible.sync="visible"
      v-if="visible"
    >
      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" class="l-mes">
        <el-form-item label="">
          <!-- <el-date-picker
            v-model="dataForm.selectTime"
            type="datetime"
            placeholder="选择日期时间"
            value-format="yyyy-MM-dd HH:mm:ss"
          >
          </el-date-picker> -->
          <rich-text
                editorId="fwb001122"
                :richContent="remark"
                @contentChange="contentChange"
            ></rich-text>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="info" @click="visible = false">取消</el-button>
        <el-button
          type="primary"
          :disabled="isSubmit"
          v-thinclick="`dataFormSubmit`"
          >确定</el-button
        >
      </div>
    </el-dialog>
  </template>
  <script>
  import { otcCustomerOrderSync } from '@/api/plan/customerorder'
  import RichText from '@/views/common/rich-text.vue'
  export default {
    components: { RichText },
    data() {
      return {
        visible: false,
        dataForm: {
          selectTime: null
        },
        dataRule: {},
        isSubmit: false,
        remark:''
      }
    },
    methods: {
      init() {
        this.visible = true
      },
      dataFormSubmit() {
        this.isSubmit = true
        if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
          otcCustomerOrderSync({
            selectTime: this.dataForm.selectTime,
            pathCode: '0'
          })
            .then((response) => {
              const resData = response.data
              if (resData.code === 0) {
                this.$message.success('拉取销售订单成功;' + resData.msg)
                this.visible = false
                this.isSubmit = false
                this.dataForm.selectTime = null
                this.$emit('refreshDataList')
              } else {
                this.$message.success('拉取销售订单失败')
                this.isSubmit = false
              }
            })
            .catch((error) => {
              this.isSubmit = false
              console.error(error)
            })
        } else {
          this.isSubmit = false
          this.$message.error('请先选择日期')
        }
      },
      contentChange(e){
        console.log(1111,e)
      }
    }
  }
  </script>
  <style scoped lang="scss">
  .mps-table .el-table__row > td {
    border: none;
  }
  .mps-table::before {
    height: 0px;
  }
  /*
  å­—符串过长时,隐藏显示省略号
  */
  .inline-el-hidden {
    display: block;
    width: 93%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin: 0 auto;
  }
  ::v-deep .quill-editor{
    .ql-container{
        min-height:  400px!important;
    }
  }
  </style>
src/views/product/producttraceability/index.vue
@@ -344,7 +344,110 @@
          </el-tab-pane> -->
          <el-tab-pane label="检测信息" name="检测信息">
            <div style="margin-top:10px;">
              <el-tabs type="card">
                <div class="process" v-if="process">
                    <el-divider
                    class="pane-divider"
                    direction="vertical"
                    ></el-divider>
                    <span style="font-size:14px;font-weight:bold"
                    >过程检</span>
                    <div style="font-size: 12px;margin-top: 10px;margin-left: 10px;">样品名:<span style="font-weight: 700;">{{process.sampleName}}</span></div>
                    <el-table
                    stripe
                    :data="process.sampleItem"
                    :height="paramsTableHeight"
                    :header-cell-style="paramsTableHeaderStyle0"
                    :row-class-name="tableRowClassName"
                    class="taskinfo-params-table"
                    style="margin: 10px;width: 95%;"
                  >
                    <el-table-column
                      prop="father"
                      label="项目"
                      align="center"
                      min-width="75px"
                    />
                    <el-table-column
                      prop="name"
                      label="指标"
                      align="center"
                      min-width="100px"
                    />
                    <el-table-column
                      prop="result"
                      label="结果"
                      align="center"
                      min-width="60px"
                    >
                      <template slot-scope="scope">
                        {{
                          scope.row.isQualified == 0
                            ? '不合格'
                            : '合格'
                        }}
                      </template>
                    </el-table-column>
                    <el-table-column
                      prop="userName"
                      label="检验人"
                      align="center"
                      min-width="90px"
                    />
                  </el-table>
                </div>
                <div class="product" v-if="finished" :class="{checkMore:process}">
                    <el-divider
                    class="pane-divider"
                    direction="vertical"
                    ></el-divider>
                    <span style="font-size:14px;font-weight:bold"
                    >产品检</span>
                    <div style="font-size: 12px;margin-top: 10px;margin-left: 10px;">样品名:<span style="font-weight: 700;">{{finished.sampleName}}</span></div>
                    <el-table
                    stripe
                    :data="finished.sampleItem"
                    :height="paramsTableHeight"
                    :header-cell-style="paramsTableHeaderStyle0"
                    :row-class-name="tableRowClassName"
                    class="taskinfo-params-table"
                    style="margin: 10px;width: 95%;"
                  >
                    <el-table-column
                      prop="father"
                      label="项目"
                      align="center"
                      min-width="75px"
                    />
                    <el-table-column
                      prop="name"
                      label="指标"
                      align="center"
                      min-width="100px"
                    />
                    <el-table-column
                      prop="result"
                      label="结果"
                      align="center"
                      min-width="60px"
                    >
                      <template slot-scope="scope">
                        {{
                          scope.row.isQualified == 0
                            ? '不合格'
                            : '合格'
                        }}
                      </template>
                    </el-table-column>
                    <el-table-column
                      prop="userName"
                      label="检验人"
                      align="center"
                      min-width="90px"
                    />
                  </el-table>
                </div>
                <!-- <p v-show="!process&&!finished">暂无数据</p> -->
              <!-- <el-tabs type="card">
                <el-tab-pane
                  v-for="(item, index) in checkItemList"
                  :key="item.reportTypeLabel"
@@ -423,25 +526,7 @@
                    </el-table-column>
                  </el-table>
                </el-tab-pane>
                <!--<el-tab-pane label="附件">
                  <el-upload
                    drag
                    ref="upload"
                    action="/mes/reportSample/upload"
                    :headers="headers"
                    :auto-upload="true"
                    :file-list="fileList"
                    list-type="text"
                    :on-preview="handlePreview"
                    :with-credentials="true"
                  >
                    <i class="el-icon-upload"></i>
                    <div class="el-upload__text">
                      å°†æ–‡ä»¶æ‹–到此处,或<em>点击上传</em>
                    </div>
                  </el-upload>
                </el-tab-pane>-->
              </el-tabs>
              </el-tabs> -->
            </div>
          </el-tab-pane>
          <el-tab-pane label="生产记录" name="生产记录">
@@ -981,6 +1066,9 @@
.taskinfo-params-table >>> td {
  padding: 3px 0px;
}
.checkMore{
    margin-top: 20px;
}
</style>
<script>
import {
@@ -1129,7 +1217,9 @@
      traceType: 'posite',
      reportTypeOptions: [],
      checkItemList: [],
      mouldRecordList: []
      mouldRecordList: [],
      finished:null,
      process:null
    }
  },
  mounted() {
@@ -1332,39 +1422,51 @@
                  _that.currProductTracking = {}
                }
                // æ£€æµ‹ä¿¡æ¯
                const sampleItemList = data.data.sampleItems
                if (sampleItemList != null && sampleItemList.length > 0) {
                  _that.paramValues = sampleItemList
                  _that.checkItemList = []
                  sampleItemList.forEach((item) => {
                    const reportTypeLabel = _that.reportTypeOptions.find(
                      (el) => {
                        return item.reportType == el.value
                      }
                    )
                    if (reportTypeLabel) {
                      const existCheckItem = _that.checkItemList.find(
                        (checkItem) => {
                          return (
                            reportTypeLabel.label == checkItem.reportTypeLabel
                          )
                        }
                      )
                      if (existCheckItem) {
                        existCheckItem.itemList.push(item)
                      } else {
                        _that.checkItemList.push({
                          reportTypeLabel: reportTypeLabel.label,
                          itemList: [item]
                        })
                      }
                    }
                  })
                  // reportTypeOptions
                } else {
                  _that.paramValues = []
                  _that.checkItemList = []
                const sampleItems = data.data.sampleItems
                // æ£€æµ‹ä¿¡æ¯-过程检
                if(sampleItems&&sampleItems.process&&sampleItems.process.length>0){
                    _that.process = sampleItems.process[0]
                }else{
                    _that.process = null
                }
                // æ£€æµ‹ä¿¡æ¯-产品检
                if(sampleItems&&sampleItems.finished&&sampleItems.finished.length>0){
                    _that.finished = sampleItems.finished[0]
                }else{
                    _that.finished = null
                }
                // if (sampleItemList != null && sampleItemList.length > 0) {
                //   _that.paramValues = sampleItemList
                //   _that.checkItemList = []
                //   sampleItemList.forEach((item) => {
                //     const reportTypeLabel = _that.reportTypeOptions.find(
                //       (el) => {
                //         return item.reportType == el.value
                //       }
                //     )
                //     if (reportTypeLabel) {
                //       const existCheckItem = _that.checkItemList.find(
                //         (checkItem) => {
                //           return (
                //             reportTypeLabel.label == checkItem.reportTypeLabel
                //           )
                //         }
                //       )
                //       if (existCheckItem) {
                //         existCheckItem.itemList.push(item)
                //       } else {
                //         _that.checkItemList.push({
                //           reportTypeLabel: reportTypeLabel.label,
                //           itemList: [item]
                //         })
                //       }
                //     }
                //   })
                //   // reportTypeOptions
                // } else {
                //   _that.paramValues = []
                //   _that.checkItemList = []
                // }
                _that.currOperateTask = data.data.operationTask
                if (_that.currOperateTask == null) {
                  _that.currOperateTask = {
@@ -1392,11 +1494,11 @@
                  _that.productRecordParamValues = []
                  _that.paramTabs = []
                } else {
                  // å·¥æ­¥ä¿¡æ¯
                  _that.getStepRecords({
                    id: _that.currOperateTask.id,
                    sn: nodeData.batchNo.split('SN号:')[1]
                  })
                  // å·¥æ­¥ä¿¡æ¯--报错注释掉了
                //   _that.getStepRecords({
                //     id: _that.currOperateTask.id,
                //     sn: nodeData.batchNo.split('SN号:')[1]
                //   })
                  // å·¥è‰ºå‚数信息
                  _that.queryTechnologyInfo(_that.currOperateTask.id)
                  // ç”Ÿäº§è®°å½•
@@ -1616,6 +1718,15 @@
      }
      return headerStyle
    },
    paramsTableHeaderStyle0({ row, column, rowIndex, columnIndex }) {
      let headerStyle = 'background:#599ef4;color:#fff;'
      if (columnIndex === 0) {
        headerStyle += 'border-radius: 6px 0px 0px 0px;'
      } else if (columnIndex === 3) {
        headerStyle += 'border-radius: 0px 6px 0px 0px;'
      }
      return headerStyle
    },
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex % 2 === 1) {
        return 'stripe-row'
src/views/warehouse/FinishedGoods/index.vue
@@ -4,8 +4,9 @@
        <ttable
        :table="table"
        :isShowHide="true"
        :ajaxFun="ajaxFun"
        :prelang="prelang"
        :options="options"
        :options="options"
        ref="processconfiguration"
        >
        <template #toolbar></template>
@@ -16,9 +17,11 @@
<script>
import ttable from '@/views/common/ztt-table.vue'
import { finishedOutcome } from '@/api/warehouse/finishedOutcome'
export default {
    data(){
        return {
            ajaxFun: finishedOutcome,
            prelang: 'operation',
            dataListLoading: false,
            options: {
@@ -44,104 +47,84 @@
                column: [
                  {
                    minWidth: '140',
                    prop: 'material',
                    label: '订单编码',
                    prop: 'outBatchNo',
                    label: '批次号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'type',
                    prop: 'parNo',
                    label: '产品编号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },{
                    minWidth: '140',
                    prop: 'partName',
                    label: '产品名称',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },{
                    minWidth: '140',
                    prop: 'oo',
                    label: '产品型号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },{
                    minWidth: '140',
                    prop: 'materhhooial',
                    label: '质量追溯号',
                    prop: 'specs',
                    label: '规格型号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'mateuurial',
                    label: '客户名称',
                    prop: 'unit',
                    label: '单位',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'materoiial',
                    label: '工艺文件编号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'matperoial',
                    label: '库位号',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'materpial',
                    label: '产品名称',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '130',
                    width: '150',
                    prop: 'dealTime',
                    label: '审核时间',
                    sort: true,
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'datetimerange',
                    // formatter: this.formatDateTime,
                },
                {
                    minWidth: '140',
                    prop: 'maial',
                    prop: 'number',
                    label: '数量',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                  {
                    minWidth: '140',
                    prop: 'cçreateTime',
                    label: '出库时间',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                    searchInfoType: 'datetimerange',
                    formatter: this.formatDateTime,
                  },
                  {
                    minWidth: '140',
                    prop: 'createUser',
                    label: '创建人',
                    isTrue: true,
                    isSearch: true,
                    searchInfoType: 'text',
                  },
                ],
                toolbar: [
                  {
                    text: '获取IFS成品库',
                    type: 'primary',
                    // fun: this.addOrUpdateHandle
                  },
                ],
                // operator: [],
                // operatorConfig: {}
            },
       }
    },
    medthods: {},
//     computed: {
//     ...mapGetters(['permissions'])
//   },
    medthods: {
      formatDateTime(row, column, cellValue) {
          return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
      },
    },
    components: {
    ttable
    },
}
</script>
</script>
src/views/warehouse/FinishedWarehousing/index.vue
@@ -4,9 +4,9 @@
      <ttable
        :table="table"
        :isShowHide="true"
        :ajaxFun="ajaxFun"
        :prelang="prelang"
        :options="options"
        :dataListLoading="false"
        ref="processconfiguration"
      >
        <template #toolbar></template>
@@ -24,6 +24,7 @@
    return {
      ajaxFun: productPage,
      prelang: 'operation',
      dataListLoading: false,
      options: {
        height: 300, // é»˜è®¤é«˜åº¦-为了表头固定
        stripe: true, // æ˜¯å¦ä¸ºæ–‘马纹 table
@@ -206,4 +207,4 @@
    ttable
  },
}
</script>
</script>
vue.config.js
@@ -7,7 +7,7 @@
// const url = 'http://192.168.2.7:9999'
// const url = 'https://ztms-mes.chinaztt.cn/'
const url = 'http://localhost:9999'
const url = 'http://192.168.0.104:9999'
const localUrl = 'http://localhost:8089'