Browse Source

编码器-页面功能

jingbb 11 months ago
parent
commit
613b482787

+ 26 - 11
src/views/production/safetyStock/encoderList.vue

@@ -66,7 +66,7 @@
             <a-button  size="small" @click='editList'>修改</a-button>
             <a-button size="small" @click="delectList">删除</a-button>
             <a-button  size="small" @click="detailList">详情</a-button>
-            <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl">
+            <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" @change="handleUploadChange"  :action="fileUpload">
                <a-button  size="small">导入</a-button>
             </a-upload>
             <a-button size="small" @click="exportList('编码器列表')">导出</a-button>
@@ -90,14 +90,16 @@
       
             </a-table>
           </div>
-          <!-- table区域-end -->
-      
+          <AddEncoder ref="AddEncoder" @ok="getTableList"></AddEncoder>
+          <EncoderDetail ref="EncoderDetail" @ok="getTableList"></EncoderDetail>
         </a-card>
     </div>
     </template>
       
       <script>
         import alertModal from '../../../plugins/modal'
+        import AddEncoder from './modules/AddEncoder'
+        import EncoderDetail from './modules/EncoderDetail'
         import { JeecgListMixin } from '@/mixins/JeecgListMixin'
         import moment from 'dayjs'
         import { httpAction ,getAction,postAction,putAction,deleteAction,downFile} from '@/api/manage'
@@ -105,6 +107,8 @@
           name: "SafetyStockList",
           mixins: [JeecgListMixin],
           components: {
+            AddEncoder,
+            EncoderDetail
           },
           data () {
             return {
@@ -191,16 +195,13 @@
               url: {
                     list: "/encoder/encoder/list",
               },
-              importExcelUrl:'/encoder/encoder/importExcel',
+              fileUpload: window._CONFIG['domianURL'] + "/encoder/encoder/importExcel",
               }
             },      
            created () {
             this.getTableList()
            },
            computed: {
-              importExcelUrl: function(){
-                  return `${window._CONFIG['domianURL']}/${this.importExcelUrl}`;
-              },
            },
           methods: {
             //获取数据
@@ -265,7 +266,9 @@
             },
             //新增
             addList(){
-                
+                this.$refs.AddEncoder.visible = true
+                this.$refs.AddEncoder.defaultMethod='add'
+                this.$refs.AddEncoder.getOptionUnit()
             },
             //编辑
             editList(){
@@ -274,9 +277,20 @@
               }else if(this.selectedRowKeys.length>1){
                 this.$message.warning('只可勾选一条数据')
               }else{
-            
+                this.$refs.AddEncoder.visible=true
+                this.$refs.AddEncoder.defaultMethod='edit'
+                this.$refs.AddEncoder.getEditData(this.selectedRowKeys[0])
               }
             },
+            handleUploadChange({ file, fileList }){
+                if (file.status === 'done'&&file.response.success) {
+                    this.$message.success(file.response.message)
+                    this.getTableList()
+                }else if(file.status === 'done'&&!file.response.success){
+                    this.$message.error(file.response.message)
+                }
+                
+            },
             //删除
             delectList(){
               if(this.selectedRowKeys.length==0){
@@ -289,7 +303,7 @@
                     var ids =  this.selectedRowKeys.toString()
                     var that = this
                     alertModal.loading("执行中,请稍后!")
-                    deleteAction('/encoder/encoder/queryById', {ids: ids}).then((res) => {
+                    deleteAction('/encoder/encoder/deleteBatch', {ids: ids}).then((res) => {
                       alertModal.closeLoading();
                       if (res.success) {
                         this.$message.success('删除成功!');
@@ -336,7 +350,8 @@
               }else if(this.selectedRowKeys.length>1){
                 this.$message.warning('请选择一条数据!')
               }else{
-                
+                this.$refs.EncoderDetail.visible=true
+                this.$refs.EncoderDetail.getEditData(this.selectedRowKeys[0])
               }
             },
             //双击

+ 237 - 0
src/views/production/safetyStock/modules/AddEncoder.vue

@@ -0,0 +1,237 @@
+<template>
+    <a-modal
+      :title="(defaultMethod == 'add')?'新增':'编辑'"
+       width="60%"
+      :visible="visible"
+      :maskClosable="false"
+      switchFullscreen
+      @cancel="handleCancel"
+      @ok='handleOK'
+      >
+      <a-card :bordered="false" class="moddle" style="margin-bottom:1%" :loading = 'loading'>
+        <div class="table-page-search-wrapper">
+            <a-form-model layout="inline" :model="form" :rules="rules"  ref="form">
+              <a-row :gutter="24">
+                <a-col  :md="8" :sm="24">
+                  <a-form-model-item label="料品名称" prop='inventoryName' >
+                    <a-input placeholder="请输入" v-model="form.inventoryName" ></a-input>
+                  </a-form-model-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-model-item label="料品类别"  prop='classifyName' >
+                    <a-input-search placeholder="请输入" v-model="form.classifyName" @search="searchClassName"></a-input-search>
+                  </a-form-model-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                    <a-form-model-item label="料品辅单位" prop='auxiliaryUnit' >
+                      <a-select style="width:100%;"  v-model="form.auxiliaryUnit" @change="changeAuxiliaryUnit">
+                            <a-select-option v-for="(val,index) in unitOptions" :key="index" :value="val.Name">{{ val.Name }}</a-select-option>
+                        </a-select>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24" >
+                    <a-form-model-item label="料品主单位" prop='unit' >
+                        <a-select style="width:100%;"  v-model="form.unit" @change="changeUnit">
+                            <a-select-option v-for="(val,index) in unitOptions" :key="index" :value="val.Name">{{ val.Name }}</a-select-option>
+                        </a-select>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="颜色" prop='color' :labelCol="{offset: 1}">
+                      <a-input v-model="form.color"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="支长" prop='fixedLength' :labelCol="{offset: 2}">
+                      <a-input v-model="form.fixedLength"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="宽/高" prop='widthHeight' :labelCol="{offset: 1}">
+                      <a-input v-model="form.widthHeight"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="料品属性" prop='attribute' >
+                      <a-input v-model="form.attribute" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+              </a-row>
+            </a-form-model>
+        </div>
+     </a-card>
+     <ClassNamePopup ref="ClassNamePopup" @okData="okData"></ClassNamePopup>
+    </a-modal>
+  </template>
+  <script>
+  
+      import { FormTypes } from '@/utils/JEditableTableUtil'
+      import { JEditableTableModelMixin } from '@/mixins/JEditableTableModelMixin'
+      import moment from "moment"
+      import { httpAction ,getAction,postAction,putAction} from '@/api/manage'
+      import ClassNamePopup from '../../Popup/ClassNamePopup.vue'
+      export default {
+        name: 'AddEncoder',
+        mixins: [JEditableTableModelMixin],
+        components: {
+            ClassNamePopup,
+        },
+        data() {
+          return {
+            visible:false,
+            form:{},
+            loading:false,
+            defaultMethod:'add',
+            unitOptions:[],
+            rules:{
+              inventoryName: [
+                { required: true, trigger: 'blur' },
+              ],
+              color:[
+                { required: true, trigger: 'blur' },
+              ],
+              widthHeight:[
+                { required: true, trigger: 'blur' },
+              ],
+              fixedLength:[
+                { required: true, trigger: 'blur' },
+              ],
+            }
+          }
+        },
+        created() {
+          
+        },
+        methods: {
+            handleCancel(){
+                this.form = {}
+                this.visible=false
+                this.defaultMethod='add'
+            },
+            getOptionUnit(){
+                getAction('/production/safetyStock/selectUnit').then((res) => {
+                  if (res.success) {
+                   this.unitOptions = res.result
+                  } else {
+                    this.$message.error(res.message);
+                  }
+                })
+            },
+            handleOK(){
+              this.$refs.form.validate(success => {
+	              if (success) {
+                    this.loading = true
+                    if(this.defaultMethod=='add'){
+                      postAction('/encoder/encoder/add', this.form).then((res) => {
+                        if (res.success) {
+                          this.$message.success('添加成功!');
+                          this.handleCancel()
+                          this.$emit('ok')
+                        } else {
+                          this.$message.error(res.message);
+                        }
+                      }).finally(() => {
+                        this.loading = false
+                      })
+                    }else{
+                      putAction('/encoder/encoder/edit', this.form).then((res) => {
+                        if (res.success) {
+                          this.$message.success('编辑成功!');
+                          this.handleCancel()
+                          this.$emit('ok')
+                        } else {
+                            this.$message.error(res.message);
+                        }
+                      }).finally(() => {
+                          this.loading = false
+                      })
+                    } 
+	              }
+              })  
+            },
+            getEditData(id){
+              getAction('/encoder/encoder/queryById',{id:id}).then((res) => {
+                  if (res.success) {
+                   this.form = res.result
+                  } else {
+                    this.$message.error(res.message);
+                  }
+                })
+            },
+            onSelectChange(selectedRowKeys, selectionRows) {
+                this.selectedRowKeys = selectedRowKeys;
+            },
+            okData(data){
+              this.$set(this.form,'classifyName',data.name)
+              this.$set(this.form,'classify',data.id )
+              this.$refs.form.clearValidate()
+            },
+            searchClassName(){
+                this.$refs.ClassNamePopup.visible = true
+                this.$refs.ClassNamePopup.getData()
+            },
+            changeUnit(data){
+                this.unitOptions.map(item=>{
+                    if(item.Name==data){
+                        this.form.unitId = item.ID
+                    }
+                })
+            },
+            changeAuxiliaryUnit(data){
+                this.unitOptions.map(item=>{
+                    if(item.Name==data){
+                        this.form.auxiliaryUnitId = item.ID
+                    }
+                })
+            }
+
+        }
+      }
+  </script>
+  
+  <style scoped lang="less">
+    /* @import '~@assets/less/common.less' */
+    /deep/.ant-input{
+        height:29px;
+    }
+    /deep/.ant-input-number{
+      height:29px;
+      width:100%
+    }
+    /deep/.ant-select-selection--single {
+        height: 29px;
+    }
+    /deep/.ant-select{
+        font-size: 12px;
+    }
+    /deep/.ant-form label{
+        font-size: 12px;
+    }
+    /deep/.table-page-search-wrapper .ant-form-inline .ant-form-item{
+        margin-bottom:9px
+    }
+    /deep/.moddle>.ant-card-body{
+        padding-bottom:0px;
+        padding-top: 12px;
+    }
+    /deep/.ant-btn{
+        height:28px
+    }
+    /deep/.ant-modal-body{
+        padding-bottom: 0px;
+        // padding-top: 0px;
+    }
+    /deep/.ant-modal-content{
+        background: #f0f2f5;
+    }
+    /deep/.ant-card-body .table-operator {
+        margin-bottom: 0px;
+    }
+    /deep/.ant-calendar-picker{
+        min-width: 0px !important;  
+    }
+    // 表单校验隐藏提示文字
+    /deep/.ant-form-explain{
+      display:none
+    }
+  </style>

+ 164 - 0
src/views/production/safetyStock/modules/EncoderDetail.vue

@@ -0,0 +1,164 @@
+<template>
+    <a-modal
+      title="详情"
+       width="60%"
+      :visible="visible"
+      :maskClosable="false"
+      switchFullscreen
+      @cancel="handleCancel"
+      >
+      <template #footer>
+        <a-button  @click="handleCancel" style="margin-left: 8px;">取消</a-button>
+      </template>
+      <a-card :bordered="false" class="moddle" style="margin-bottom:1%" :loading = 'loading'>
+        <div class="table-page-search-wrapper">
+            <a-form-model layout="inline" :model="form" :rules="rules"  ref="form">
+              <a-row :gutter="24">
+                <a-col  :md="8" :sm="24">
+                  <a-form-model-item label="料品名称" prop='inventoryName' >
+                    <a-input placeholder="请输入" v-model="form.inventoryName" disabled></a-input>
+                  </a-form-model-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-model-item label="料品类别"  prop='classifyName' >
+                    <a-input placeholder="请输入" v-model="form.classifyName" disabled></a-input>
+                  </a-form-model-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                    <a-form-model-item label="料品辅单位" prop='auxiliaryUnit' >
+                      <a-input placeholder="请输入" v-model="form.auxiliaryUnit" disabled></a-input>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24" >
+                    <a-form-model-item label="料品主单位" prop='unit' >
+                      <a-input placeholder="请输入" v-model="form.unit" disabled></a-input>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="颜色" prop='color' :labelCol="{offset: 1}">
+                      <a-input v-model="form.color" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="支长" prop='fixedLength' :labelCol="{offset: 2}">
+                      <a-input v-model="form.fixedLength" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="宽/高" prop='widthHeight' :labelCol="{offset: 1}">
+                      <a-input v-model="form.widthHeight" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="8" :sm="24">
+                    <a-form-model-item label="料品属性" prop='attribute' >
+                      <a-input v-model="form.attribute" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+              </a-row>
+            </a-form-model>
+        </div>
+     </a-card>
+    </a-modal>
+  </template>
+  <script>
+  
+      import { FormTypes } from '@/utils/JEditableTableUtil'
+      import { JEditableTableModelMixin } from '@/mixins/JEditableTableModelMixin'
+      import moment from "moment"
+      import { httpAction ,getAction,postAction,putAction} from '@/api/manage'
+      export default {
+        name: 'EncoderDetail',
+        mixins: [JEditableTableModelMixin],
+        components: {
+        },
+        data() {
+          return {
+            visible:false,
+            form:{},
+            loading:false,
+            rules:{
+              inventoryName: [
+                { required: true, trigger: 'blur' },
+              ],
+              color:[
+                { required: true, trigger: 'blur' },
+              ],
+              widthHeight:[
+                { required: true, trigger: 'blur' },
+              ],
+              fixedLength:[
+                { required: true, trigger: 'blur' },
+              ],
+            }
+          }
+        },
+        created() {
+          
+        },
+        methods: {
+            handleCancel(){
+                this.form = {}
+                this.visible=false
+            },
+            getEditData(id){
+              getAction('/encoder/encoder/queryById',{id:id}).then((res) => {
+                  if (res.success) {
+                   this.form = res.result
+                  } else {
+                    this.$message.error(res.message);
+                  }
+                })
+            },
+            onSelectChange(selectedRowKeys, selectionRows) {
+                this.selectedRowKeys = selectedRowKeys;
+            },
+        }
+      }
+  </script>
+  
+  <style scoped lang="less">
+    /* @import '~@assets/less/common.less' */
+    /deep/.ant-input{
+        height:29px;
+    }
+    /deep/.ant-input-number{
+      height:29px;
+      width:100%
+    }
+    /deep/.ant-select-selection--single {
+        height: 29px;
+    }
+    /deep/.ant-select{
+        font-size: 12px;
+    }
+    /deep/.ant-form label{
+        font-size: 12px;
+    }
+    /deep/.table-page-search-wrapper .ant-form-inline .ant-form-item{
+        margin-bottom:9px
+    }
+    /deep/.moddle>.ant-card-body{
+        padding-bottom:0px;
+        padding-top: 12px;
+    }
+    /deep/.ant-btn{
+        height:28px
+    }
+    /deep/.ant-modal-body{
+        padding-bottom: 0px;
+        // padding-top: 0px;
+    }
+    /deep/.ant-modal-content{
+        background: #f0f2f5;
+    }
+    /deep/.ant-card-body .table-operator {
+        margin-bottom: 0px;
+    }
+    /deep/.ant-calendar-picker{
+        min-width: 0px !important;  
+    }
+    // 表单校验隐藏提示文字
+    /deep/.ant-form-explain{
+      display:none
+    }
+  </style>