cuijian
5 天以前 fe87f8fe2250e1ffc7d1474fb97cc0ceb89ae55e
量具检定
已添加4个文件
已修改1个文件
737 ■■■■■ 文件已修改
src/views/tms/ToolVerificationList.vue 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/ToolVerificationRecordList.vue 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/inbound/InboundListRight.vue 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/verification/ToolVerificationRecordForm.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/modules/verification/ToolVerificationRecordModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/ToolVerificationList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col
            :md="6"
            :sm="8"
          >
            <a-form-item label="量具编号">
              <j-input placeholder="请输入量具编号" v-model="queryParam.toolCode" />
            </a-form-item>
          </a-col>
          <a-col
            :md="6"
            :sm="8"
          >
            <a-form-item label="唯一编码">
              <j-input placeholder="请输入唯一编码" v-model="queryParam.onlyCode" />
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-space>
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
            </a-space>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
    </div>
    <!-- table区域-begin -->
    <div>
      <a-table
        ref="table"
        size="middle"
        :scroll="{x:true}"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="null"
        class="j-table-force-nowrap"
        @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
          <a @click="handleDetail(record)">详情</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a @click="handleEdit(record)">编辑</a>
              </a-menu-item>
              <a-menu-item>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>
      </a-table>
    </div>
  </a-card>
</template>
<script>
  import '@/assets/less/TableExpand.less'
  import { mixinDevice } from '@/utils/mixin'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { getAction } from '../../api/manage'
  export default {
    name: 'ToolVerificationList',
    mixins:[JeecgListMixin, mixinDevice],
    components: {
    },
    data () {
      return {
        description: '量具检定列表',
        // è¡¨å¤´
        columns: [
          {
            title: '#',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
            title:'量具编号',
            align:"center",
            dataIndex: 'toolCode',
          },
          {
            title:'唯一编码',
            align:"center",
            dataIndex: 'toolId',
          },
          {
            title:'量具名称',
            align:"center",
            dataIndex: 'toolName'
          },
          {
            title:'规格',
            align:"center",
            dataIndex: 'model'
          },
          {
            title:'计量号',
            align:"center",
            dataIndex: 'measureNumber'
          },
          {
            title:'库位号',
            align:"center",
            dataIndex: 'warehouseCode'
          },
          {
            title:'下次检定日期',
            align:"center",
            dataIndex: 'nextVerificationDate'
          },
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            fixed:"right",
            width:147,
            scopedSlots: { customRender: 'action' }
          }
        ],
        url: {
          list: "/tms/toolVerificationRecord/list",
          delete: "/tms/toolVerificationRecord/delete",
          deleteBatch: "/tms/toolVerificationRecord/deleteBatch",
          exportXlsUrl: "/tms/toolVerificationRecord/exportXls",
          importExcelUrl: "tms/toolVerificationRecord/importExcel",
        },
        dictOptions:{},
        superFieldList:[],
      }
    },
    created() {
      this.getSuperFieldList();
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    methods: {
      searchReset() {
        this.queryParam = {}
        this.loadData(1);
      },
      filterOption(input, option) {
        return (
          option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
        );
      },
      initDictConfig(){
      },
      getSuperFieldList(){
        let fieldList=[];
        fieldList.push({type:'string',value:'tenantId',text:'租户号'})
        fieldList.push({type:'string',value:'createdBy',text:'创建人'})
        fieldList.push({type:'date',value:'createdTime',text:'创建时间'})
        fieldList.push({type:'string',value:'updatedBy',text:'更新人'})
        fieldList.push({type:'date',value:'updatedTime',text:'更新时间'})
        fieldList.push({type:'string',value:'onlyCode',text:'唯一编码'})
        fieldList.push({type:'string',value:'measureNumber',text:'计量号'})
        fieldList.push({type:'date',value:'nextVerificationDate',text:'下次检定日期'})
        fieldList.push({type:'date',value:'verificationReportDate',text:'检定报告日期'})
        fieldList.push({type:'string',value:'personResponsible',text:'责任人'})
        fieldList.push({type:'string',value:'result',text:'检定结果及意见'})
        this.superFieldList = fieldList
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>
src/views/tms/ToolVerificationRecordList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,223 @@
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col
            :md="6"
            :sm="8"
          >
            <a-form-item label="量具编号">
              <j-input placeholder="请输入量具编号" v-model="queryParam.toolCode" />
            </a-form-item>
          </a-col>
          <a-col
            :md="6"
            :sm="8"
          >
            <a-form-item label="唯一编码">
              <j-input placeholder="请输入唯一编码" v-model="queryParam.onlyCode" />
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-space>
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
            </a-space>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
    </div>
    <!-- table区域-begin -->
    <div>
      <a-table
        ref="table"
        size="middle"
        :scroll="{x:true}"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="null"
        class="j-table-force-nowrap"
        @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
          <a @click="handleDetail(record)">详情</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a @click="handleEdit(record)">编辑</a>
              </a-menu-item>
              <a-menu-item>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>
      </a-table>
    </div>
    <tool-verification-record-modal ref="modalForm" @ok="modalFormOk"></tool-verification-record-modal>
  </a-card>
</template>
<script>
  import '@/assets/less/TableExpand.less'
  import { mixinDevice } from '@/utils/mixin'
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import ToolVerificationRecordModal from './modules/verification/ToolVerificationRecordModal'
  import { getAction } from '../../api/manage'
  export default {
    name: 'ToolVerificationRecordList',
    mixins:[JeecgListMixin, mixinDevice],
    components: {
      ToolVerificationRecordModal
    },
    data () {
      return {
        description: '量具检定结果记录列表',
        // è¡¨å¤´
        columns: [
          {
            title: '#',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
            title:'量具编号',
            align:"center",
            dataIndex: 'toolCode',
          },
          {
            title:'唯一编码',
            align:"center",
            dataIndex: 'toolId',
          },
          {
            title:'量具名称',
            align:"center",
            dataIndex: 'toolName'
          },
          {
            title:'规格',
            align:"center",
            dataIndex: 'model'
          },
          {
            title:'计量号',
            align:"center",
            dataIndex: 'measureNumber'
          },
          {
            title:'检定报告日期',
            align:"center",
            dataIndex: 'verificationReportDate'
          },
          {
            title:'检定结果及意见',
            align:"center",
            dataIndex: 'result'
          },
          {
            title:'责任人',
            align:"center",
            dataIndex: 'personResponsible'
          },
          {
            title:'创建人',
            align:"center",
            dataIndex: 'createBy'
          },
          {
            title:'创建时间',
            align:"center",
            dataIndex: 'createTime'
          },
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            fixed:"right",
            width:147,
            scopedSlots: { customRender: 'action' }
          }
        ],
        url: {
          list: "/tms/toolVerificationRecord/list",
          delete: "/tms/toolVerificationRecord/delete",
          deleteBatch: "/tms/toolVerificationRecord/deleteBatch",
          exportXlsUrl: "/tms/toolVerificationRecord/exportXls",
          importExcelUrl: "tms/toolVerificationRecord/importExcel",
        },
        dictOptions:{},
        superFieldList:[],
      }
    },
    created() {
      this.getSuperFieldList();
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      },
    },
    methods: {
      searchReset() {
        this.queryParam = {}
        this.loadData(1);
      },
      filterOption(input, option) {
        return (
          option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
        );
      },
      initDictConfig(){
      },
      getSuperFieldList(){
        let fieldList=[];
        fieldList.push({type:'string',value:'tenantId',text:'租户号'})
        fieldList.push({type:'string',value:'createdBy',text:'创建人'})
        fieldList.push({type:'date',value:'createdTime',text:'创建时间'})
        fieldList.push({type:'string',value:'updatedBy',text:'更新人'})
        fieldList.push({type:'date',value:'updatedTime',text:'更新时间'})
        fieldList.push({type:'string',value:'onlyCode',text:'唯一编码'})
        fieldList.push({type:'string',value:'measureNumber',text:'计量号'})
        fieldList.push({type:'date',value:'nextVerificationDate',text:'下次检定日期'})
        fieldList.push({type:'date',value:'verificationReportDate',text:'检定报告日期'})
        fieldList.push({type:'string',value:'personResponsible',text:'责任人'})
        fieldList.push({type:'string',value:'result',text:'检定结果及意见'})
        this.superFieldList = fieldList
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>
src/views/tms/modules/inbound/InboundListRight.vue
@@ -99,23 +99,14 @@
          </a-button>
        </template>
        <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
            <a-menu slot="overlay">
              <a-menu-item>
                <a @click="handleDetail(record)">详情</a>
              </a-menu-item>
              <a-menu-item>
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
       <span
          slot="action"
          slot-scope="text, record"
        >
          <a
            href="javascript:;"
            @click="handlePrint(record)"
          >打印二维码</a>
        </span>
      </a-table>
@@ -147,6 +138,13 @@
    <inbound-model ref="modalForm" @ok="modalFormOk" :nodeSelected="nodeSelected"></inbound-model>
    <inbound-apply-model-list ref="inboundApplyModelList"></inbound-apply-model-list>
    <div id="printArea" style="display: block;">
      <div v-for="(item, index) in qrList" :key="index" class="qrcode-item">
        <p>{{ item.onlyCode }}</p>
        <p>{{ item.toolName }}</p>
        <img :src="item.base64" alt="QR Code">
      </div>
    </div>
  </a-card>
</template>
@@ -166,6 +164,7 @@
  import ParaBladeList from '.././baseTools/ParaBladeList'
  import InboundModel from './InboundModel'
  import InboundApplyModelList from './InboundApplyModelList.vue'
  import printJS from 'print-js';
  export default {
    name: 'InboundListRight',
@@ -258,14 +257,14 @@
              return !text?"":(text.length>10?text.substr(0,10):text)
            }
          },
          // {
          //   title: '操作',
          //   dataIndex: 'action',
          //   align:"center",
          //   fixed:"right",
          //   width:147,
          //   scopedSlots: { customRender: 'action' }
          // }
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            fixed:"right",
            width:147,
            scopedSlots: { customRender: 'action' }
          }
        ],
        url: {
          list: "/tms/inStoreDetail/list",
@@ -281,13 +280,15 @@
          exportXlsUrl: "/tms/baseTools/exportXls",
          importExcelUrl: "tms/baseTools/importExcel",
          queryParaByToolCode:"/tms/baseTools/queryByToolCode",
          queryByToolCode:"/tms/toolsConfigProperty/queryByToolCode"
          queryByToolCode:"/tms/toolsConfigProperty/queryByToolCode",
          print:'/tms/inStoreDetail/print'
        },
        dictOptions:{},
        superFieldList:[],
        nodeSelected: {}, // å½“前选中的节点数据
        paraTypeFlag:'',
        disableMixinCreated:true
        disableMixinCreated:true,
        qrList: []
      }
    },
    created() {
@@ -527,7 +528,46 @@
        this.$refs.paraTurningToolsList.visable = false
        this.$refs.paraBladeList.visable = false
        this.$refs.toolsConfigPropertyList.visable = false
      }
      },
      handlePrint(record){
          this.loading = true
          getAction(this.url.print, {onlyCode:record.onlyCode})
            .then((res) => {
              if (res.success) {
                this.qrList = res.result.map((content, i) => ({
                  onlyCode:res.result[i].onlyCode,
                  toolName:res.result[i].toolName,
                  base64: res.result[i].image
                  }));
                  this.handleBacthPrint();
                this.$emit('ok', new Date())
              } else {
                this.$message.warning(res.message)
              }
            })
            .finally(() => {
              this.loading = false
              this.close()
            })
    },
    // æ‰§è¡Œæ‰“印
    handleBacthPrint() {
      this.$nextTick(() => {
        printJS({
          printable: 'printArea',
          type: 'html',
          style: `
            .qrcode-item {
              page-break-inside: avoid;
              margin: 10px;
              text-align: center;
            }
            img { width: 100px; height: 100px; }
          `,
          scanStyles: false
        });
      });
    }
      
    },
  }
src/views/tms/modules/verification/ToolVerificationRecordForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
<template>
  <a-spin :spinning="confirmLoading">
    <j-form-container :disabled="formDisabled">
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="租户号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="tenantId">
              <a-input v-model="model.tenantId" placeholder="请输入租户号"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="创建人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createdBy">
              <a-input v-model="model.createdBy" placeholder="请输入创建人"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createdTime">
              <j-date placeholder="请选择创建时间" v-model="model.createdTime"  style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="更新人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="updatedBy">
              <a-input v-model="model.updatedBy" placeholder="请输入更新人"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="更新时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="updatedTime">
              <j-date placeholder="请选择更新时间" v-model="model.updatedTime"  style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="唯一编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="onlyCode">
              <a-input v-model="model.onlyCode" placeholder="请输入唯一编码"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="计量号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="measureNumber">
              <a-input v-model="model.measureNumber" placeholder="请输入计量号"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="下次检定日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nextVerificationDate">
              <j-date placeholder="请选择下次检定日期" v-model="model.nextVerificationDate"  style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="检定报告日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="verificationReportDate">
              <j-date placeholder="请选择检定报告日期" v-model="model.verificationReportDate"  style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="责任人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="personResponsible">
              <a-input v-model="model.personResponsible" placeholder="请输入责任人"  ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="检定结果及意见" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="result">
              <a-input v-model="model.result" placeholder="请输入检定结果及意见"  ></a-input>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </j-form-container>
  </a-spin>
</template>
<script>
  import { httpAction, getAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
  export default {
    name: 'ToolVerificationRecordForm',
    components: {
    },
    props: {
      //表单禁用
      disabled: {
        type: Boolean,
        default: false,
        required: false
      }
    },
    data () {
      return {
        model:{
         },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
        },
        url: {
          add: "/tms/toolVerificationRecord/add",
          edit: "/tms/toolVerificationRecord/edit",
          queryById: "/tms/toolVerificationRecord/queryById"
        }
      }
    },
    computed: {
      formDisabled(){
        return this.disabled
      },
    },
    created () {
       //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      submitForm () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            }
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }
        })
      },
    }
  }
</script>
src/views/tms/modules/verification/ToolVerificationRecordModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    switchFullscreen
    @ok="handleOk"
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    @cancel="handleCancel"
    cancelText="关闭">
    <tool-verification-record-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></tool-verification-record-form>
  </j-modal>
</template>
<script>
  import ToolVerificationRecordForm from './ToolVerificationRecordForm'
  export default {
    name: 'ToolVerificationRecordModal',
    components: {
      ToolVerificationRecordForm
    },
    data () {
      return {
        title:'',
        width:800,
        visible: false,
        disableSubmit: false
      }
    },
    methods: {
      add () {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.add();
        })
      },
      edit (record) {
        this.visible=true
        this.$nextTick(()=>{
          this.$refs.realForm.edit(record);
        })
      },
      close () {
        this.$emit('close');
        this.visible = false;
      },
      handleOk () {
        this.$refs.realForm.submitForm();
      },
      submitCallback(){
        this.$emit('ok');
        this.visible = false;
      },
      handleCancel () {
        this.close()
      }
    }
  }
</script>