6 コミット 52508ce1b8 ... 3a52a1e546

作者 SHA1 メッセージ 日付
  peter 3a52a1e546 change: cargo-consolidation-request.总离岸价改为自动计算. 1 ヶ月 前
  peter 0a39a2c5bc feat: indent转单.增加sku信息. 1 ヶ月 前
  peter 8ad9f55415 change: 创建po.搜索供应商结果全是隐藏数据时进行提示. 1 ヶ月 前
  peter 1c5fcaca0a change: cargo-consolidation-request应要求调整. 1 ヶ月 前
  peter 7eba602272 dependencies: 升级依赖. 1 ヶ月 前
  peter 33c0478ff1 fix: fix typescript build error. 1 ヶ月 前

+ 3 - 3
package.json

@@ -22,9 +22,9 @@
     "lodash.debounce": "^4.0.8",
     "mathjs": "^13.2.3",
     "qrcode": "^1.5.4",
-    "vue": "^3.5.13",
+    "vue": "^3.5.14",
     "vue-draggable-plus": "^0.6.0",
-    "vue-router": "^4.5.0",
+    "vue-router": "^4.5.1",
     "xlsx": "^0.18.5"
   },
   "devDependencies": {
@@ -35,7 +35,7 @@
     "@types/qrcode": "^1.5.5",
     "@typescript-eslint/eslint-plugin": "^7.18.0",
     "@typescript-eslint/parser": "^7.18.0",
-    "@vitejs/plugin-vue": "^5.2.3",
+    "@vitejs/plugin-vue": "^5.2.4",
     "@vue/eslint-config-prettier": "^9.0.0",
     "autoprefixer": "^10.4.20",
     "eslint": "^8.57.1",

+ 50 - 13
src/pages/cargo-consolidation-request/index.vue

@@ -65,11 +65,21 @@
           label="ETD"
           width="110"
         />
+        <el-table-column
+          prop="ATD"
+          label="ATD"
+          width="110"
+        />
         <el-table-column
           prop="ETA"
           label="ETA"
           width="110"
         />
+        <el-table-column
+          prop="ATA"
+          label="ATA"
+          width="110"
+        />
         <el-table-column
           prop="Cut_Off_Date"
           label="入仓时间"
@@ -80,14 +90,14 @@
           label="状态"
           width="100"
         />
-        <el-table-column
+        <!-- <el-table-column
           label="修改时间"
           min-width="190"
         >
           <template #default="scope">
             {{ dayjs(scope.row.Modified_Time).format('YYYY-MM-DD HH:mm:ss') }}
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column
           prop="GRN"
           label="入仓单号"
@@ -109,6 +119,7 @@
               size="small"
               type="warning"
               link
+              :disabled="!scope.row.SubscriptionId"
               @click="openMapDrawer(scope.row)"
             >
               查看轨迹
@@ -320,7 +331,7 @@
             <el-input
               v-model="scope.row.Quantity"
               size="small"
-              @change="scope.row.editFlag = true"
+              @change="changeTotal(scope.row)"
             ></el-input>
           </template>
         </el-table-column>
@@ -332,7 +343,7 @@
             <el-input
               v-model="scope.row.Unit_Price"
               size="small"
-              @change="scope.row.editFlag = true"
+              @change="changeTotal(scope.row)"
             ></el-input>
           </template>
         </el-table-column>
@@ -450,7 +461,7 @@
             <el-input
               v-model="scope.row.Total_FOB"
               size="small"
-              @change="scope.row.editFlag = true"
+              disabled
             ></el-input>
           </template>
         </el-table-column>
@@ -588,8 +599,20 @@ const dateShortcuts = ref([
     value: generateDateRange(14),
   },
 ] as any[])
+function getDefaultRange() {
+  const today = dayjs()
+  const lastMonthFirstDay = today
+    .subtract(1, 'month')
+    .startOf('month')
+    .format('YYYY-MM-DD')
+  const nextMonthLastDay = today
+    .add(1, 'month')
+    .endOf('month')
+    .format('YYYY-MM-DD')
 
-dateRange.value = generateDateRange(14)
+  return [lastMonthFirstDay, nextMonthLastDay]
+}
+dateRange.value = getDefaultRange()
 
 const clearSubList = () => {
   subList.value = []
@@ -601,16 +624,25 @@ let getList = () => {
   loading.value = true
   zoho.CRM.API.coql({
     select_query:
-      'select Name,Forwarder,ETD,ETA,Cut_Off_Date,Owner,Status,Modified_Time,Carrier,Booking_Number,GRN from Sea_Freight_Table' +
+      'select Name,Forwarder,ETD,ATD,ETA,ATA,Cut_Off_Date,Owner,Status,Modified_Time,SubscriptionId,Carrier,Booking_Number,GRN from Sea_Freight_Table' +
       " where ETD between '" +
       `${dateRange.value.map((i) => dayjs(i).format('YYYY-MM-DD')).join("' and '")}` +
       "'",
   })
     .then((res: any) => {
       if (Array.isArray(res.data) && res.data.length) {
-        list.value = res.data
+        list.value = res.data.sort(
+          (a: any, b: any) =>
+            new Date(b.Cut_Off_Date).getTime() -
+            new Date(a.Cut_Off_Date).getTime(),
+        )
       } else if (res.status === 204) {
-        ElMessage.info(res.statusText || 'zoho api return:' + res.status)
+        ElNotification({
+          type: 'warning',
+          title: 'No Data Found',
+          message: res.statusText || `zoho api return: ${res.status}`,
+          duration: 3000,
+        })
         list.value = []
         clearSubList()
       }
@@ -666,6 +698,11 @@ const generateSubList = () => {
       })),
   )
 }
+const changeTotal = (row: any) => {
+  row.editFlag = true
+  row.Total_FOB = (Number(row.Unit_Price) * Number(row.Quantity)).toFixed(2)
+}
+
 /**
  *  用来增加新行的数据模版
  */
@@ -1082,11 +1119,11 @@ let computedTotalFOB = computed(() => {
 let mapDrawerVisible = ref(false)
 const openMapDrawer = (row: any) => {
   mapDrawerVisible.value = true
-  console.log(row.Carrier, 'row.value.Carrier')
-  console.log(row.Booking_Number, 'row.value.Booking_Number')
-  if (window.Sgld) {
+  // console.log(row.Carrier, 'row.value.Carrier')
+  // console.log(row.Booking_Number, 'row.value.Booking_Number')
+  if ((window as any).Sgld) {
     nextTick(() => {
-      window.Sgld.createContainerTrack({
+      ;(window as any).Sgld.createContainerTrack({
         id: 'mapDrawer',
         carrierCode: row.Carrier, // 船公司代码
         billNo: row.Booking_Number, // 提单号

+ 52 - 1
src/pages/indent-manage/indent/components/quoteRecord.vue

@@ -23,6 +23,28 @@
               label-width="140"
             >
               <div class="flex justify-between flex-wrap">
+                <el-form-item
+                  label="SKU"
+                  style="height: 40px"
+                >
+                  <div
+                    class="el-input el-input__wrapper el-input__inner fake-sku-input"
+                    @click="openSkuSelect(props.$index)"
+                  >
+                    <span class="cursor-pointer">
+                      {{ formList[props.$index].product_sku }}
+                    </span>
+                  </div>
+                </el-form-item>
+                <el-form-item
+                  label="产品名称"
+                  prop="product_name"
+                >
+                  <el-input
+                    v-model="formList[props.$index].product_name"
+                    disabled
+                  ></el-input>
+                </el-form-item>
                 <el-form-item
                   :rules="{
                     required: true,
@@ -321,6 +343,11 @@
         <el-button @click="show2 = false">关闭</el-button>
       </div>
     </el-dialog>
+
+    <sku-select
+      v-model:visible="skuSelectVisible"
+      @select="selectSku"
+    ></sku-select>
   </div>
 </template>
 <script lang="ts" setup>
@@ -344,12 +371,19 @@ import {
 } from 'element-plus'
 import { Notebook } from '@element-plus/icons-vue'
 import { getCalcPriceRecord, generateOrder } from '@/api/indent'
+import skuSelect from './skuSelect.vue'
+
 defineComponent({
   name: 'ComponentQuoteRecord',
 })
-const { visible = false, id = '' } = defineProps<{
+const {
+  visible = false,
+  id = '',
+  indentData = {} as any,
+} = defineProps<{
   visible: boolean
   id: string | number
+  indentData: object
 }>()
 const $emit = defineEmits(['update:visible', 'success'])
 let show = ref(false)
@@ -387,6 +421,9 @@ const getCalcPriceRecordFunc = () => {
         const v = list.value[i].Accounts || ({} as any)
         // remoteOption.value.push([])
         formList.value.push({
+          item_id: indentData.item_id || '',
+          product_name: indentData.product_name || '',
+          product_sku: indentData.product_sku || '',
           Contract_Title: '',
           Expected_Delivery_Date: '',
           Brand_Name: '',
@@ -509,6 +546,20 @@ const onChangeOrderClick = (row: any) => {
 //     target.push({ value: 1, label: 1 })
 //   }
 // }
+const skuSelectVisible = ref(false)
+const openSkuSelect = (key: any) => {
+  skuSelectVisible.value = true
+}
+const selectSku = (data: any) => {
+  formList.value = formList.value.map((i: any) => {
+    return {
+      ...i,
+      product_name: data.product_name || '',
+      product_sku: data.product_sku || '',
+      item_id: data.id || '',
+    }
+  })
+}
 </script>
 <style lang="scss">
 .dialog-change-order {

+ 9 - 2
src/pages/indent-manage/indent/list.vue

@@ -408,6 +408,7 @@
     </el-dialog>
     <dialogQuoteRecord
       :id="changeOrderID"
+      :indent-data="indentData"
       v-model:visible="dialogChangeOrderVisible"
       @success="onDialogChangeOrderClose"
     ></dialogQuoteRecord>
@@ -694,7 +695,7 @@ const componentEditVisible = ref(0) // 1 新增, 2编辑. 0关闭
 const componentFreightVisible = ref(false) // 设置运费参数
 const componentEditInfoVisible = ref(0) // 编辑报价信息
 const componentCalcPriceVisible = ref(false) // 计价
-const indentData = ref({}) // 修改询价的时候使用
+const indentData = ref({}) // 修改询价和转单的时候使用, 记录的是询价的行数据.
 const quoteForEdit = ref({}) // 修改和计价时共用, 只是用作传递给子组件数据的变量
 const infoParentId = ref(0)
 const loading = ref(false)
@@ -970,10 +971,12 @@ const onBtnChangeOrderClick = (row: any, parentRow: any) => {
         },
       ).then(() => {
         changeOrderID.value = row.id
+        indentData.value = parentRow
         dialogChangeOrderVisible.value = true
       })
     } else {
       changeOrderID.value = row.id
+      indentData.value = parentRow
       dialogChangeOrderVisible.value = true
     }
   }
@@ -982,9 +985,13 @@ const onDialogChangeOrderClose = () => {
   getList()
   dialogChangeOrderVisible.value = false
   changeOrderID.value = ''
+  indentData.value = {}
 }
 watch(dialogChangeOrderVisible, () => {
-  if (!dialogChangeOrderVisible.value) changeOrderID.value = ''
+  if (!dialogChangeOrderVisible.value) {
+    indentData.value = {}
+    changeOrderID.value = ''
+  }
 })
 
 const auditUser = ref('')

+ 5 - 0
src/pages/purchase-order/edit.vue

@@ -238,6 +238,7 @@
                   <el-select
                     v-model="form.currentVendor"
                     :remote-method="utils.debounce(getSupplierLists, 1000)"
+                    @input="form.currentVendor = ''"
                     remote
                     style="width: 100%"
                     :loading="vendorLoading"
@@ -2091,6 +2092,10 @@ const getSupplierLists = function (string: string) {
             },
           )
         }
+
+        if (vendorList.value.length === 0 && res.data.length > 0) {
+          ElMessageBox.alert('该供应商已被隐藏, 请联系相关同事修改。', 'Alert')
+        }
         vendorLoading.value = false
         loading.value = false
         resolve(true)