Bläddra i källkod

产成品入库;菜单类型切换保存

hongxudong 2 år sedan
förälder
incheckning
5d75c25643

+ 2 - 2
.env.dev

@@ -1,11 +1,11 @@
 NODE_ENV = 'development'
 VUE_APP_BUILD_TYPE='dev'
 VUE_APP_SERVER_URL='http://localhost:6001'
-VUE_APP_UPLOAD_URL='http://localhost:6001/basic-server/file/upload'
+VUE_APP_UPLOAD_URL='https://s.dev01.dkiboss.com:6010/api/mdm-server/file/upload'
 VUE_APP_EXPORT_URL='http://localhost:5000/'
 VUE_APP_EXPORT_SQL_URL='http://s.dev01.dkiboss.com:6010/custom-report-sql.sql'
 VUE_APP_LOGS_URL='https://ibossmp.dongkesoft.com:7050/logs'
-VUE_APP_IMG_URL='https://hgscrm-dev.oss-cn-shenzhen.aliyuncs.com/'
+VUE_APP_IMG_URL='https://s.dev01.dkiboss.com:6010/file'
 VUE_APP_HG_IMG_URL='https://haip-dev.oss-cn-shenzhen.aliyuncs.com/'
 VUE_APP_WEBSOCKET_URL='ws://localhost:1015/websocket/'
 VUE_APP_LOGIN_PAGE_NAME=["login"]

+ 3 - 1
src/api/pages/pdm-server/collect.js

@@ -44,7 +44,9 @@ export default {
     //验证数量限制
     getLimitQty:'/get_limit_qty',
     //通过条码查询
-    getProductByCode: '/get_product_by_code'
+    getProductByCode: '/get_product_by_code',
+    //通过条码或载具查询产品
+    selectByCodeOrCarrier: '/get_product_by_code_or_carrier'
   }
 }
 export const routeUrl = {

+ 20 - 0
src/api/pages/pset/userBasicSet.js

@@ -0,0 +1,20 @@
+/**
+ * @desc   : 用户基础设置
+ * @author : 洪旭东
+ * @date   : 2023-08-14 10:07
+ */
+export default {
+  userBasicSetService:{
+    prefix:'/mdm-server/pset/user_basic_set/',
+  }
+}
+
+/**
+ * @desc   : 路由
+ * @author : 洪旭东
+ * @date   : 2023-08-14 10:07
+ */
+export const routeUrl = {
+  userBasicSet: {
+  }
+}

+ 3 - 4
src/components/business/select-magnifier/select-magnifier.vue

@@ -1930,10 +1930,9 @@ export default {
         self.modalWidth = 800
         self.colCount = 2
         self.selectKey = 'whId'
-        self.selectLabel = 'whCode'
+        self.selectLabel = 'whCodeName'
         self.columns = [
-          {field: 'whCode', width: 'auto'},
-          {field: 'whName', width: 'auto'},
+          {field: 'whCodeName', width: 'auto'},
         ]
       }
       // 仓位
@@ -1949,7 +1948,7 @@ export default {
         self.selectKey = 'placeId'
         self.selectLabel = 'placeName'
         self.columns = [
-          {field: 'whCode', width: 'auto'},
+          {field: 'whCodeName', width: 'auto'},
           {field: 'placeName', width: 'auto'},
         ]
       }

+ 61 - 12
src/components/main/components/side-menu/side-menu-item.vue

@@ -1,18 +1,43 @@
 <template>
-  <Submenu :name="`${parentName}`" @mouseenter.native="mouseEnter($event, children)"
-           @mouseleave.native="mouseOut($event, children)">
+  <div>
+    <Submenu :name="`${parentName}`" @mouseenter.native="mouseEnter($event, children)"
+             @mouseleave.native="mouseOut($event, children)" v-if="drawer">
 
-    <template slot="title">
-      <!--用阿里库图标替换-->
-      <!--      <common-icon :style="{color:(parentItem && parentItem.searchFlag)?'orange':''}" :type="parentItem.icon || ''"/>-->
-      <icon :color="(parentItem && parentItem.searchFlag)?'orange':''" size="10"
-            :custom="'iconfont iconfont ' + parentItem.icon"></icon>
-      <span :style="{color:(parentItem && parentItem.searchFlag)?'orange':'','padding-left':'10px'}">{{
-          showTitle(parentItem)
-        }}</span>
-    </template>
-  </Submenu>
+      <template slot="title">
+        <!--用阿里库图标替换-->
+        <!--      <common-icon :style="{color:(parentItem && parentItem.searchFlag)?'orange':''}" :type="parentItem.icon || ''"/>-->
+        <icon :color="(parentItem && parentItem.searchFlag)?'orange':''" size="10"
+              :custom="'iconfont iconfont ' + parentItem.icon"></icon>
+        <span :style="{color:(parentItem && parentItem.searchFlag)?'orange':'','padding-left':'10px'}">{{
+            showTitle(parentItem)
+          }}</span>
+      </template>
+    </Submenu>
 
+    <Submenu :name="`${parentName}`" v-if="!drawer">
+      <template slot="title">
+<!--        <common-icon :type="parentItem.icon || ''"/>-->
+        <icon size="10"
+              :custom="'iconfont iconfont ' + parentItem.icon"></icon>
+        <span :style="(searchText && showTitle(parentItem).includes(searchText) ? 'color: orange;':'')">{{
+            showTitle(parentItem)
+          }}</span>
+        <Icon type="md-arrow-dropdown" />
+      </template>
+      <template v-for="item in children" v-if="item.meta.title && item.meta.flgRight">
+        <template v-if="item.children && item.children.length === 1">
+          <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item" :search-text="searchText"></side-menu-item>
+          <menu-item v-else :name="getNameOrHref(item, true)" :key="`menu-${item.children[0].name}`">
+            <common-icon :type="item.children[0].icon || ''"/><span> :style="(searchText && showTitle(item.children[0]).includes(searchText) ? 'color: orange;':'')"{{ showTitle(item.children[0]) }}</span></menu-item>
+        </template>
+        <template v-else>
+          <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item" :search-text="searchText"></side-menu-item>
+          <menu-item v-else :name="getNameOrHref(item)" :key="`menu-${item.name}`">
+            <common-icon :type="item.icon || ''"/><span :style="(searchText && showTitle(item).includes(searchText) ? 'color: orange;':'')">{{ showTitle(item) }}</span></menu-item>
+        </template>
+      </template>
+    </Submenu>
+  </div>
 </template>
 <script>
   import mixin from './mixin'
@@ -21,6 +46,22 @@
   export default {
     name: 'SideMenuItem',
     mixins: [mixin, itemMixin],
+    props: {
+      //筛选条件
+      searchText: {
+        type: String
+      }
+    },
+    computed: {
+      /**
+       * @desc   : 菜单类型
+       * @author : 洪旭东
+       * @date   : 2023-08-11 15:46
+       */
+      drawer(){
+        return this.$store.state.app.menuType === 'drawer'
+      },
+    },
     methods: {
       getClass(item) {
         if (item.name === this.$route.name) {
@@ -45,6 +86,14 @@
        */
       mouseOut(event, children) {
         this.$emit('out', event, children)
+      },
+      /**
+       * @desc   : 搜索高亮标题
+       * @author : 洪旭东
+       * @date   : 2023-08-14 09:06
+       */
+      highLightTitle (item) {
+
       }
     }
   }

+ 2 - 2
src/components/main/components/side-menu/side-menu.vue

@@ -16,14 +16,14 @@
       <template v-for="item in menuListData">
         <template v-if="item.children && item.children.length === 1">
           <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item"
-                          @enter="enter" @out="out"></side-menu-item>
+                          @enter="enter" @out="out" :search-text="menuName"></side-menu-item>
           <menu-item v-else :name="getNameOrHref(item, true)" :key="`menu-${item.children[0].name}`">
             <common-icon :type="item.children[0].icon || ''"/>
             <span>{{ showTitle(item.children[0]) }}</span></menu-item>
         </template>
         <template v-else>
           <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item"
-                          @enter="enter" @out="out"></side-menu-item>
+                          @enter="enter" @out="out" :search-text="menuName"></side-menu-item>
           <menu-item v-else :name="getNameOrHref(item)" :key="`menu-${item.name}`">
             <common-icon :type="item.icon || ''"/>
             <span>{{ showTitle(item) }}</span></menu-item>

+ 29 - 2
src/components/main/components/user/user.vue

@@ -37,6 +37,7 @@
         <!--        <DropdownItem name="personalInfo">{{ $t('personalInfo') }}</DropdownItem>-->
         <DropdownItem name="refresh">{{ $t('refreshBasicData') }}</DropdownItem>
         <DropdownItem name="update">{{ $t('editPassword') }}</DropdownItem>
+        <DropdownItem name="changeMenu">{{ menuType === 'drawer' ? $t('treeMenu'):$t('drawerMenu') }}</DropdownItem>
         <DropdownItem name="logout">{{ $t('logout') }}</DropdownItem>
       </DropdownMenu>
     </Dropdown>
@@ -205,7 +206,7 @@
 
 <script>
 import './user.less'
-import {mapActions} from 'vuex'
+import {mapActions, mapMutations} from 'vuex'
 import md5 from 'js-md5'
 import {button as buttonList} from '@/locale/lang/zh-CN'
 import defaultAvatar from '/public/logo.png'
@@ -277,6 +278,14 @@ export default {
      */
     flgInitPwd() {
       return this.$store.state.user.flgInitPwd
+    },
+    /**
+     * @desc   : 菜单类型
+     * @author : 洪旭东
+     * @date   : 2023-08-11 15:46
+     */
+    menuType(){
+      return this.$store.state.app.menuType
     }
   },
   watch: {
@@ -293,6 +302,9 @@ export default {
     ...mapActions([
       'handleLogOut', 'cleanTokenAccess', 'setUserTableSettingAfter', 'setMenuListAfter'
     ]),
+    ...mapMutations([
+      'setMenuType',
+    ]),
     changeFile(e) {
       const files = [...e.target.files]
       e.target.value = null
@@ -300,7 +312,7 @@ export default {
       const _dataValue = []
       try {
         for (let i = 0; i < files.length; i++) {
-          const {type} = files[i]
+          const {type} = files[i]``
           const imgType = type.split('/')[0]
           if (imgType !== 'image') {
             this.upLoadImg = false
@@ -696,6 +708,21 @@ export default {
         case '14':
           this.changeFontSize(name);
           break
+        case 'changeMenu':
+          if (this.menuType === 'drawer') {
+            this.setMenuType('tree')
+          } else {
+            this.setMenuType('drawer')
+          }
+          this.excute(this.$service.userBasicSetService, this.$service.userBasicSetService.update,
+            {menuType:this.$store.state.app.menuType}).then(res=>{
+              if (res.code === this.$config.SUCCESS_CODE) {
+
+              } else {
+                this.$Message.error(res.message)
+              }
+            })
+          break
       }
     }
   },

+ 3 - 0
src/components/main/main.less

@@ -54,6 +54,9 @@
 .ivu-menu-item > i{
   margin-right: 12px !important;
 }
+.ivu-menu-submenu > .ivu-menu > .ivu-menu-item {
+  padding-right: 5px;
+}
 .ivu-menu-submenu > .ivu-menu > .ivu-menu-item > i {
   margin-right: 8px !important;
 }

+ 4 - 0
src/config/index.js

@@ -1164,6 +1164,10 @@ export default {
     modelId:'modelId',
     //物料型号
     modelMaterial: 'modelMaterial',
+    //仓库
+    warehouse:'warehouse',
+    //仓位
+    warehousePlace:'warehousePlace',
   },
   /**
    * @desc   : 选择类型

+ 27 - 0
src/libs/update-columns/index.js

@@ -303,6 +303,12 @@ export default {
    *   @author : 寇珊珊
    */
   modelMould:[
+    {updateField: 'erpSkuId', valueFiled: 'modelId'},
+    {updateField: 'modelCode', valueFiled: 'modelCode'},
+    {updateField: 'modelName', valueFiled: 'modelName'},
+  ],
+
+  produceOrderModelMould:[
     {updateField: 'modelId', valueFiled: 'modelId'},
     {updateField: 'modelCode', valueFiled: 'modelCode'},
     {updateField: 'modelName', valueFiled: 'modelName'},
@@ -352,4 +358,25 @@ export default {
     {updateField: 'nodeId', valueFiled: 'nodeId'},
     {updateField: 'nodeName', valueFiled: 'nodeName'},
   ],
+
+  /**
+   * @desc   : 产成品入库仓库
+   * @author : 洪旭东
+   * @date   : 2023-08-09 15:58
+   */
+  productDeliveryWh:[
+    {updateField: 'whId', valueFiled: 'whId'},
+    {updateField: 'whCodeName', valueFiled: 'whCodeName'},
+  ],
+
+
+  /**
+   * @desc   : 产成品入库仓位
+   * @author : 洪旭东
+   * @date   : 2023-08-09 15:58
+   */
+  productDeliveryPlace:[
+    {updateField: 'placeId', valueFiled: 'placeId'},
+    {updateField: 'whPlaceName', valueFiled: 'placeName'},
+  ],
 }

+ 2 - 0
src/locale/lang/zh-CN.js

@@ -296,6 +296,8 @@ export const formTitle = {
   sopImg: '指导书图片',
   'warehouse': '仓库仓位',
   'moldingFixPlan': '成型布模计划',
+  drawerMenu: '抽屉菜单',
+  treeMenu: '树形菜单',
 }
 
 /**

+ 11 - 1
src/store/module/app.js

@@ -36,7 +36,9 @@ export default {
     local_lan: sessionRead('local_lan') || 'zh_CN',
     errorList: [],
     hasReadErrorPage: false,
-    menuList:[]
+    menuList:[],
+    //菜单类型 默认抽屉
+    menuType: 'drawer'
   },
   getters: {
     // menuList: (state, getters, rootState) => getMenuByRouter(getMoreMenu(), rootState.user.access),
@@ -127,6 +129,14 @@ export default {
     },
     setHasReadErrorLoggerStatus (state, status = true) {
       state.hasReadErrorPage = status
+    },
+    /**
+     * @desc   : 保存菜单类型
+     * @author : 洪旭东
+     * @date   : 2023-08-14 11:22
+     */
+    setMenuType (state, menuType) {
+      state.menuType = menuType
     }
   },
   actions: {

+ 2 - 0
src/store/module/user.js

@@ -246,6 +246,8 @@ export default {
       commit('setStaffName', data.user.staffName)
       commit('setRoleIds', data.user.roleIds)
       commit('setUserTableSetting', data.userTableSetting)
+      //菜单类型 默认抽屉
+      commit('setMenuType', data.menuType || 'drawer')
     },
 
     /**

+ 2 - 0
src/view/mst/model-product/form.vue

@@ -618,6 +618,8 @@ export default {
           //将标签数据反写到ERP型号表格
           if (data && data.erpList) {
             for (let i of data.erpList) {
+              //物料编码赋值
+              i.modelCode = i.erpSkuCode
               if (i.labelList) {
                 for (let j of i.labelList) {
                   i[j.labelKind] = j.labelCode

+ 1 - 1
src/view/mst/model-product/index.vue

@@ -75,7 +75,7 @@
                    name="table">
             <DkTableColumn field="logoName"></DkTableColumn>
             <DkTableColumn field="colourName"></DkTableColumn>
-            <DkTableColumn field="erpSkuName" :title="$t('erpSkuId')"></DkTableColumn>
+            <DkTableColumn field="erpSkuCode" :title="$t('erpSkuId')"></DkTableColumn>
             <DkTableColumn field="flgDefault" type="switch"></DkTableColumn>
             <DkTableColumn v-for="(item, index) of kindColumn" :key="index" :field="item.kindCode" :title="item.kindName"></DkTableColumn>
             <DkTableColumn field="remarks" width="auto"></DkTableColumn>

+ 1 - 1
src/view/mst/produce-order/form.vue

@@ -82,7 +82,7 @@
               return {}
             },
             dataType: self.$config.tableSelectType.modelMaterial,
-            fieldUpdate: self.$updateColumns.modelMould,
+            fieldUpdate: self.$updateColumns.produceOrderModelMould,
           },
           //物料名称
           {

+ 7 - 2
src/view/pdm/product-delivery/add.vue

@@ -1,10 +1,15 @@
 <template>
-
+  <CommonForm type="add"></CommonForm>
 </template>
 
 <script>
+import CommonForm from './form'
+
 export default {
-name: "product-delivery-add"
+  name: "product-delivery-add",
+  components: {
+    CommonForm
+  },
 }
 </script>
 

+ 7 - 2
src/view/pdm/product-delivery/edit.vue

@@ -1,10 +1,15 @@
 <template>
-
+  <CommonForm type="reverse"></CommonForm>
 </template>
 
 <script>
+import CommonForm from './form'
+
 export default {
-  name: "product-delivery-edit"
+  name: "product-delivery-edit",
+  components: {
+    CommonForm
+  },
 }
 </script>
 

+ 261 - 4
src/view/pdm/product-delivery/form.vue

@@ -1,13 +1,270 @@
+<!-- @desc:产成品入库  @auth:洪旭东  @time:2023-08-09 13:27 -->
 <template>
-
+  <div class="main-div" ref="mainDiv">
+    <!--加载中-->
+    <loading :loading="loading" v-if="!modalVisible"></loading>
+    <DkPageButton :total="editKeys?editKeys.length:0"
+                  :current="editIndex"
+                  v-if="editKeys && editKeys.length > 1"
+                  @pageChange="editPageChange"></DkPageButton>
+    <DkCollapse ref="collapse" @on-change="changeCollapse">
+      <DkPanel prop="essentialInformation">
+        <!--  下拉区域  -->
+        <DkForm slot="content" ref="formInline" v-model="formData" :label-max-words="6" style="width: 95%">
+          <!--物料编码-->
+          <DkFormItem prop="packagingBarcode" :label="$t('appPackagingBarcode')">
+            <InputPop v-model="formData.packagingBarcode" @on-blur="changeValue" @on-enter="changeValue"/>
+          </DkFormItem>
+          <!--订单单号-->
+          <DkFormItem required prop="orderNo" v-if="type === $config.formMode.add">
+            <InputPop ref="orderNo" v-model="formData.orderNo"/>
+          </DkFormItem>
+          <!--仓库-->
+          <DkFormItem prop="whCodeName" v-if="type === $config.formMode.add">
+            <SelectMagnifier v-model="formData.whId" :type="$config.MagnifierType.warehouse" :multiple="false"
+            @ok="chooseWarehouse"></SelectMagnifier>
+          </DkFormItem>
+          <!--仓位-->
+          <DkFormItem prop="whPlaceName" v-if="type === $config.formMode.add">
+            <SelectMagnifier v-model="formData.placeId" :type="$config.MagnifierType.warehousePlace"
+            :disabled="!formData.whId" :other-condition="{whId: formData.whId}" :multiple="false"
+            @ok="chooseWhPlace"></SelectMagnifier>
+          </DkFormItem>
+        </DkForm>
+      </DkPanel>
+      <!--列表数据-->
+      <DkPanel prop="details">
+        <!--明细-->
+        <EditTable slot="content" ref="table"
+                   :columns="detailColumns"
+                   :height="tableHeight + 8"
+                   :freeze="false"
+                   :enabledRepeat="false"
+                   @addRow="addList"
+                   :add-flag="false"
+                   :requiredColumn="['whCodeName', 'whPlaceName']"
+        ></EditTable>
+      </DkPanel>
+    </DkCollapse>
+    <!--      下部分按钮区域-->
+    <DkSaveButton ref="saveButton" :loading="loading" @save="save" @close="close"></DkSaveButton>
+  </div>
 </template>
 
 <script>
+import { formMixin } from '@/mixins/form'
 export default {
-  name: "form"
+  mixins: [formMixin],
+  data() {
+    let self = this
+    return {
+      loading: false,
+      tableHeight: 600,
+      checkId: null,//总单Id编辑用
+      // 画面表单数据
+      formData: {
+        packagingBarcode: null,//物料编码
+        orderId:null,//订单Id
+        whId: null,//仓库
+        placeId: null,//仓位
+      },
+      //明细
+      detailColumns: [
+        //物料型号编码
+        { field: 'pdtUniqueCode', title: self.$t('pdtBarcode'), type: 'disabled', width: 'auto', },
+        //产品型号
+        { field: 'modelCodeName', title: self.$t('pdtModel'), type: 'disabled', width: 'auto', },
+        //商标
+        { field: 'logoCodeName', title: self.$t('productLogo'), type: 'disabled', width: 'auto', },
+        //成型工号
+        { field: 'moldingUserCodeName', title: self.$t('moldingUser'), type: 'disabled', width: 'auto', },
+        //模具名称
+        { field: 'moldlineItemCode', title: self.$t('produceModelCode'), type: 'disabled', width: 'auto', },
+        //成型日期
+        { field: 'moldingDate', title: self.$t('moldingDate'), type: 'disabled', width: 'auto', },
+        //交坯日期
+        { field: 'renderMTime', title: self.$t('renderMTime'), type: 'disabled', width: 'auto', },
+        //板码
+        { field: 'carrierCode', title: self.$t('carrierCode'), type: 'disabled', width: 'auto', },
+        //仓库
+        {
+          field: 'whCodeName',
+          type: 'tableSelect',
+          selectField: 'whCodeName',
+          width: 'auto',
+          param: () => {
+            return {}
+          },
+          dataType: self.$config.tableSelectType.warehouse,
+          fieldUpdate: self.$updateColumns.productDeliveryWh,
+        },
+        //仓位
+        {
+          field: 'whPlaceName',
+          type: 'tableSelect',
+          selectField: 'placeName',
+          width: 'auto',
+          param: () => {
+            return {}
+          },
+          dataType: self.$config.tableSelectType.warehousePlace,
+          fieldUpdate: self.$updateColumns.productDeliveryPlace,
+        },
+        //备注
+        { field: 'remarks', type: 'text', width: 'auto', },
+      ],
+    }
+  },
+  methods: {
+    /**
+     * @desc   : 新建明细
+     * @author : 洪旭东
+     * @date   : 2023-08-09 16:23
+     */
+    addList(rowIndex) {
+      if (this.$refs.table && this.$refs.table.tableData[rowIndex + 1]) {
+        this.$refs.table.tableData[rowIndex + 1].whId = this.formData.whId
+        this.$refs.table.tableData[rowIndex + 1].whCodeName = this.formData.whCodeName
+        this.$refs.table.tableData[rowIndex + 1].placeId = this.formData.placeId
+        this.$refs.table.tableData[rowIndex + 1].whPlaceName = this.formData.whPlaceName
+      }
+    },
+    /**
+     * @desc   : 设置传参
+     * @author : 洪旭东
+     * @date   : 2023-08-11 11:27
+     */
+    setParams() {
+      this.params = this.$refs.table.tableData.filter(f => f.pdtUniqueId).map(m => {return {
+        pdtUniqueId: m.pdtUniqueId,
+        opnType: this.type === this.$config.formMode.add ? 1:0,
+        whId: m.whId,
+        placeId: m.placeId,
+        carrierId: m.carrierId,
+        carrierBatch: m.carrierBatch,
+        carrierRangeId: m.carrierRangeId,
+        orderNo: this.formData.orderNo
+      }})
+    },
+    /**
+     * @desc   : 验证数据
+     * @author : 洪旭东
+     * @date   : 2023-08-11 11:25
+     */
+    validData() {
+      if (!this.$refs.table.tableData.filter(f => f.pdtUniqueId).length) {
+        this.$Message.warning(this.$t('W_012'))
+        return false
+      }
+      if (this.type === this.$config.formMode.add &&
+        this.$refs.table.tableData.some(s => !s.whId || !s.placeId)) {
+        this.$Message.warning(this.$t('W_001', {'param': '明细中仓库或仓位'}))
+        return false
+      }
+      return true
+    },
+    /**
+     * @desc   : 保存数据
+     * @author : 洪旭东
+     * @date   : 2023-08-11 11:27
+     */
+    saveData() {
+      return this.type === this.$config.formMode.add ?
+        this.excute(this.$service.productDeliveryService, this.$service.productDeliveryService.insertBatch, this.params)
+        : this.excute(this.$service.productDeliveryService, this.$service.productDeliveryService.reverse, this.params)
+    },
+    /**
+     * @desc   : 清空
+     * @author : 洪旭东
+     * @date   : 2023-08-11 11:28
+     */
+    clear() {
+      this.formData = {
+        packagingBarcode: null,//物料编码
+        orderId:null,//订单Id
+        whId: null,//仓库
+        placeId: null,//仓位
+      }
+    },
+    /**
+     * @desc   : 选择仓库
+     * @author : 洪旭东
+     * @date   : 2023-08-09 16:12
+     */
+    chooseWarehouse(val) {
+      if (val && val.length) {
+        let wh = val[0]
+        this.formData.whCodeName = wh.whCodeName
+        for (let it of this.$refs.table.tableData) {
+          if (!it.whId) {
+            it.whId = wh.whId
+            it.whCodeName = wh.whCodeName
+          }
+        }
+        this.$refs.table.$refs.xTable.reloadData(this.$refs.table.tableData)
+      }
+    },
+    /**
+     * @desc   : 选择仓位
+     * @author : 洪旭东
+     * @date   : 2023-08-09 16:12
+     */
+    chooseWhPlace(val) {
+      if (val && val.length) {
+        let whp = val[0]
+        this.formData.whPlaceName = whp.placeName
+        for (let it of this.$refs.table.tableData) {
+          if (!it.placeId) {
+            it.placeId = whp.placeId
+            it.whPlaceName = whp.placeName
+          }
+        }
+        this.$refs.table.$refs.xTable.reloadData(this.$refs.table.tableData)
+      }
+    },
+    /**
+     * @desc   : 表格输入
+     * @author : 洪旭东
+     * @date   : 2023-08-09 16:23
+     */
+    changeValue(){
+      let val = this.formData.packagingBarcode
+      if (!val) {
+        return
+      }
+      this.excute(this.$service.collectService, this.$service.collectService.selectByCodeOrCarrier, {barCode: val, carCode: val}).then(res=>{
+        if (res.code === this.$config.SUCCESS_CODE) {
+          //带出相同板车的产品
+          if (this.$refs.table.tableData[0] && !this.$refs.table.tableData[0].pdtUniqueId) {
+            this.$refs.table.tableData.splice(0, 1)
+          }
+          for (let it of res.data) {
+            it.pdtUniqueId = it.uniqueId
+            it.pdtUniqueCode = it.uniqueCode
+            it.whId = this.formData.whId
+            it.whCodeName = this.formData.whCodeName
+            it.placeId = this.formData.placeId
+            it.whPlaceName = this.formData.whPlaceName
+            if (!this.$refs.table.tableData.some(s => s.pdtUniqueId == it.uniqueId)) {
+              this.$refs.table.tableData.push(it)
+            }
+          }
+        } else {
+          // this.$refs.table.tableData[rowIndex].pdtUniqueCode = null
+          this.$Message.error(res.message)
+        }
+        this.formData.packagingBarcode = null
+      })
+    },
+  },
+  created() {
+    this.resizeTableFlag = true  // 计算表格高度
+    if (this.type !== this.$config.formMode.add) {
+      this.detailColumns = this.detailColumns.filter(f => f.field !== 'whCodeName' && f.field !== 'whPlaceName')
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style lang="less" scoped>
 </style>

+ 124 - 1
src/view/pdm/product-delivery/index.vue

@@ -1,10 +1,133 @@
+<!-- @desc:产成品入库  @auth:洪旭东  @time:2023-08-09 11:39 -->
 <template>
+  <div class="main-div" ref="mainDiv">
+    <!--加载中-->
+    <loading :loading="loading" v-if="!modalVisible"></loading>
+    <!--按钮区-->
+    <BaseIndexButtonGroup id="BaseIndexButtonGroup">
+      <template #left>
+        <!--    查询    -->
+        <BaseIndexButton right-button="product-delivery-select" ref="search" name="search"></BaseIndexButton>
+        <!--    清空条件    -->
+        <BaseIndexButton right-button="product-delivery-clear" ref="clear" name="clear"></BaseIndexButton>
+        <!--    编辑    -->
+        <BaseIndexButton right-button="product-delivery-reverse" ref="reverse" name="reverse" :is-must-choose-flag="false"></BaseIndexButton>
+      </template>
+      <template #right>
+        <BaseIndexButton right-button="product-delivery-add" ref="add" name="add"></BaseIndexButton>
+      </template>
+    </BaseIndexButtonGroup>
+
+    <!--  查询条件区域  -->
+    <div id="search-cond-div" ref="search-cond-div" class="search-cond-class">
+      <SearchCond ref="searchCond" v-model="searchCond"
+                  @collapse-change="collapseChange" :set-flag="false"
+                  :search-content="searchContent"></SearchCond>
+    </div>
+    <!--  列表区  -->
+    <div :style="'height: ' + tableHeight + 'px'">
+      <DkTable ref="table-select"
+               :data="tableData"
+               multiple
+               :height="tableHeight"
+               primaryKey="deliveryId"
+               :pageFlag="true"
+               @pageChange="pageSizeChange"
+               :page-total="pageInfo.total"
+               :current-page="pageInfo.currentPage"
+               :choose-flag="false"
+               name="table">
+        <!-- 操作类型-->
+        <DkTableColumn field="opnTypeName" :title="$t('opnType')"></DkTableColumn>
+        <!-- 订单单号-->
+        <DkTableColumn field="orderNo" ></DkTableColumn>
+        <!-- 交接时间-->
+        <DkTableColumn field="opnTime" :data-type="$config.dataType.date"></DkTableColumn>
+        <!-- 交接工号-->
+        <DkTableColumn field="opnUserCodeName"></DkTableColumn>
+        <!-- 仓库编码名称-->
+        <DkTableColumn field="whCodeName"></DkTableColumn>
+        <!-- 仓位名称-->
+        <DkTableColumn field="whPlaceName" ></DkTableColumn>
+        <!-- 产品条码-->
+        <DkTableColumn field="pdtUniqueCode" :title="$t('pdtBarcode')"></DkTableColumn>
+        <!-- 产品型号-->
+        <DkTableColumn field="pdtModelCodeName" :title="$t('pdtModelCode')"></DkTableColumn>
+        <!-- 产品商标-->
+        <DkTableColumn field="logoCodeName" :title="$t('pdtLogo')"></DkTableColumn>
+        <!-- 成型工号-->
+        <DkTableColumn field="moldingUserCodeName" :title="$t('moldingUsers')"></DkTableColumn>
+        <!-- 成型日期-->
+        <DkTableColumn field="moldingDate" :data-type="$config.dataType.date"></DkTableColumn>
+        <!-- 交坯日期-->
+        <DkTableColumn field="renderMTime" :data-type="$config.dataType.date"></DkTableColumn>
+        <!--备注-->
+        <DkTableColumn field="remarks" width="auto" ></DkTableColumn>
+      </DkTable>
+    </div>
+  </div>
 
 </template>
 
 <script>
+import { indexMixin } from '@/mixins'
+
 export default {
-name: "product-delivery"
+  name: 'product-delivery',
+  mixins: [indexMixin],
+  data() {
+    let self = this
+    return {
+      searchContent: [
+        {
+          itemCode: 'orderNo',
+        },
+        {
+          itemCode: 'opnUserCodeName',
+          valueFormat: { code: 'opnUserCode' },
+        },
+        {
+          itemCode: 'pdtBarcode',
+          valueFormat: { code: 'pdtUniqueCode' },
+        },
+        {
+          itemCode: 'productCode',
+          valueFormat: { code: 'pdtModelCode' },
+        },
+        {
+          itemCode: 'productName',
+          valueFormat: { code: 'pdtModelName' },
+        },
+        {
+          //产品类别
+          itemCode: 'modelCategory',
+          valueFormat: { code: 'modelCategoryId' },
+          valueKind: 'S-SEARCH',
+          magnifierType: self.$config.MagnifierType.modelCategoryReport
+        },
+        {
+          itemCode: 'opnTime',
+          valueFormat: { code: 'opnTime' },
+          valueKind: 'DATE_RANGE'
+        },
+      ],
+      ftyId: self.$store.state.user.ftyId,
+    }
+  },
+  methods: {
+    /**
+     * @desc   : 获取数据
+     * @author : 洪旭东
+     * @date   : 2023-08-11 13:14
+     */
+    getData(params) {
+      return this.excute(this.$service.productDeliveryService, this.$service.productDeliveryService.selectByCond, params)
+    },
+  },
+  created() {
+    this.primaryKey = 'deliveryId'  // 设置主键Id
+    this.routeObjName = 'productDelivery'  // 设置路由名称
+  }
 }
 </script>
 

+ 7 - 7
vue.config.js

@@ -63,13 +63,13 @@ module.exports = {
   // 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串
   devServer: {
     // proxy: 'http://127.0.0.1:8888',
-    // proxy: {
-    //   '/api': {
-    //       target: 'http://127.0.0.1:8888/', //后台服务器的ip地址
-    //       pathRewrite: { '^/api': '/' },
-    //       changeOrigin: true
-    //   }
-    // }
+    proxy: {
+      '/file': {
+          target: 'https://s.dev01.dkiboss.com:6010/file/', //后台服务器的ip地址
+          pathRewrite: { '^/file': '/' },
+          changeOrigin: true
+      }
+    }
     // proxyTable: {
     //   '/api': {
     //     target: 'http://localhost:8888',