Browse Source

Merge branch 'master_hella' of http://dev.ccwin-in.com:3000/sfms3.0/sfms3.0-ui into master_hella

master_hella_20240701
zhousq 4 months ago
parent
commit
e6bdb71fbf
  1. 54
      src/api/wms/invoicingcalendar/index.ts
  2. 11
      src/api/wms/location/index.ts
  3. 16
      src/api/wms/saleShipmentDetail/index.ts
  4. 12
      src/api/wms/saleShipmentMain/index.ts
  5. 6
      src/api/wms/supplierinvoiceRequestMain/index.ts
  6. 11
      src/components/BasicForm/src/BasicForm.vue
  7. 33
      src/components/Form/src/Form.vue
  8. 8
      src/components/Form/src/components/useRenderSelect.tsx
  9. 33
      src/components/ImportForm/src/ImportForm.vue
  10. 57
      src/components/SearchHigh/src/SearchHigh.vue
  11. 9
      src/components/SearchTable/src/SearchTable.vue
  12. 21
      src/components/TableForm/src/TableForm.vue
  13. 20
      src/components/rowDrop/index.vue
  14. 4
      src/layout/components/Breadcrumb/src/Breadcrumb.vue
  15. 4
      src/layout/components/Menu/src/components/useRenderMenuTitle.tsx
  16. 2
      src/layout/components/TagsView/src/TagsView.vue
  17. 388
      src/locales/en-US.ts
  18. 290
      src/locales/zh-CN.ts
  19. 1
      src/utils/dict.ts
  20. 2
      src/views/qms/selectedProject/selectedProject.data.ts
  21. 4
      src/views/wms/basicDataManage/itemManage/packageunit/packageunit.data.ts
  22. 8
      src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue
  23. 6
      src/views/wms/basicDataManage/supplierManage/supplier/index.vue
  24. 8
      src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue
  25. 108
      src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts
  26. 11
      src/views/wms/deliversettlementManage/saleShipmentMainRecord/index.vue
  27. 79
      src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue
  28. 196
      src/views/wms/deliversettlementManage/saleShipmentMainRequest/saleShipmentMain.data.ts
  29. 1
      src/views/wms/productionManage/productreceiptscrap/productreceiptscrapRecordMain/productreceiptscrapRecordMain.data.ts
  30. 59
      src/views/wms/productionManage/productreceiptscrap/productreceiptscrapRequestMain/index.vue
  31. 4
      src/views/wms/purchasereceiptManage/inspect/inspectRecordMain/index.vue
  32. 12
      src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRecordMain/index.vue
  33. 2
      src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/index.vue
  34. 2
      src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRecordMain/index.vue
  35. 2
      src/views/wms/purchasereceiptManage/sparereceipt/sparereceiptRequestMain/index.vue
  36. 20
      src/views/wms/purchasereceiptManage/supplierdeliver/demandforecastingMain/index.vue
  37. 24
      src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/index.vue
  38. 12
      src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/purchaseMain.data.ts
  39. 44
      src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/index.vue
  40. 8
      src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRecordMain/index.vue
  41. 67
      src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/index.vue
  42. 4
      src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/supplierdeliverBasicForm.vue
  43. 68
      src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/supplierdeliverRequestMain.data.ts
  44. 252
      src/views/wms/supplierManage/invoicingcalendar/index.vue
  45. 110
      src/views/wms/supplierManage/invoicingcalendar/invoicingcalendar.data.ts
  46. 24
      src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue
  47. 12
      src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue
  48. 83
      src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue
  49. 20
      src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue

54
src/api/wms/invoicingcalendar/index.ts

@ -0,0 +1,54 @@
import request from '@/config/axios'
export interface InvoicingcalendarVO {
id: number
beginDay: string
endDay: string
descriiption: string
available: string
remark: string
extraProperties: string
concurrencyStamp: number
siteId: string
}
// 查询开票日历列表
export const getInvoicingcalendarPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/invoicingcalendar/senior', data })
} else {
return await request.get({ url: `/wms/invoicingcalendar/page`, params })
}
}
// 查询开票日历详情
export const getInvoicingcalendar = async (id: number) => {
return await request.get({ url: `/wms/invoicingcalendar/get?id=` + id })
}
// 新增开票日历
export const createInvoicingcalendar = async (data: InvoicingcalendarVO) => {
return await request.post({ url: `/wms/invoicingcalendar/create`, data })
}
// 修改开票日历
export const updateInvoicingcalendar = async (data: InvoicingcalendarVO) => {
return await request.put({ url: `/wms/invoicingcalendar/update`, data })
}
// 删除开票日历
export const deleteInvoicingcalendar = async (id: number) => {
return await request.delete({ url: `/wms/invoicingcalendar/delete?id=` + id })
}
// 导出开票日历 Excel
export const exportInvoicingcalendar = async (params) => {
return await request.download({ url: `/wms/invoicingcalendar/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/invoicingcalendar/get-import-template' })
}

11
src/api/wms/location/index.ts

@ -84,3 +84,14 @@ export const selectBusinessTypeToLocation = async (params) => {
return request.get({ url: `/wms/location/pageBusinessTypeToLocation`, params })
}
}
export const selectConfigToLocation = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/location/pageConfigToLocationSenior', data })
} else {
return request.get({ url: `/wms/location/pageConfigToLocation`, params })
}
}

16
src/api/wms/saleShipmentDetail/index.ts

@ -28,38 +28,38 @@ export const getSaleShipmentDetailPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/sale-shipment-detail/senior', data })
return await request.post({ url: '/wms/sale-shipment-detail-request/senior', data })
} else {
return await request.get({ url: `/wms/sale-shipment-detail/page`, params })
return await request.get({ url: `/wms/sale-shipment-detail-request/page`, params })
}
}
// 查询销售发运申请子详情
export const getSaleShipmentDetail = async (id: number) => {
return await request.get({ url: `/wms/sale-shipment-detail/get?id=` + id })
return await request.get({ url: `/wms/sale-shipment-detail-request/get?id=` + id })
}
// 新增销售发运申请子
export const createSaleShipmentDetail = async (data: SaleShipmentDetailVO) => {
return await request.post({ url: `/wms/sale-shipment-detail/create`, data })
return await request.post({ url: `/wms/sale-shipment-detail-request/create`, data })
}
// 修改销售发运申请子
export const updateSaleShipmentDetail = async (data: SaleShipmentDetailVO) => {
return await request.put({ url: `/wms/sale-shipment-detail/update`, data })
return await request.put({ url: `/wms/sale-shipment-detail-request/update`, data })
}
// 删除销售发运申请子
export const deleteSaleShipmentDetail = async (id: number) => {
return await request.delete({ url: `/wms/sale-shipment-detail/delete?id=` + id })
return await request.delete({ url: `/wms/sale-shipment-detail-request/delete?id=` + id })
}
// 导出销售发运申请子 Excel
export const exportSaleShipmentDetail = async (params) => {
return await request.download({ url: `/wms/sale-shipment-detail/export-excel`, params })
return await request.download({ url: `/wms/sale-shipment-detail-request/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/sale-shipment-detail/get-import-template' })
return request.download({ url: '/wms/sale-shipment-detail-request/get-import-template' })
}

12
src/api/wms/saleShipmentMain/index.ts

@ -64,31 +64,31 @@ export const importTemplate = () => {
}
// 关闭-销售发运申请
export const closeSaleShipmentMain = async (id) => {
export const close = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/close?id=` + id })
}
// 重新添加-销售发运申请
export const reAddSaleShipmentMain = async (id) => {
export const reAdd = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/reAdd?id=` + id })
}
// 提交审批-销售发运申请
export const submitSaleShipmentMain = async (id) => {
export const submit = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/submit?id=` + id })
}
// 审批驳回-销售发运申请
export const refusedSaleShipmentMain = async (id) => {
export const refused = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/refused?id=` + id })
}
// 审批通过-销售发运申请
export const agreeSaleShipmentMain = async (id) => {
export const agree = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/agree?id=` + id })
}
// 处理-销售发运申请
export const handleSaleShipmentMain = async (id) => {
export const handle = async (id) => {
return await request.put({ url: `/wms/sale-shipment-main-request/handle?id=` + id })
}

6
src/api/wms/supplierinvoiceRequestMain/index.ts

@ -56,6 +56,12 @@ export const deleteSupplierinvoiceRequestMain = async (id: number) => {
return await request.delete({ url: `/wms/supplierinvoice-request-main/delete?id=` + id })
}
// 校验控制是否可以开票逻辑
export const checkInvoicingCalendar = async (params) => {
return await request.get({ url: `/wms/supplierinvoice-request-main/checkInvoicingCalendar`, params })
}
// 打开供应商发货申请主
export const opeSupplierinvoiceRequestMain = async (id: number) => {
return await request.post({ url: `/wms/supplierinvoice-request-main/open?id=` + id })

11
src/components/BasicForm/src/BasicForm.vue

@ -274,12 +274,7 @@ const props = defineProps({
required: false,
default: false
},
// TableForm fieldTableColumn indexTableColumn
indexTableColumn :{
type: Number,
required: false,
default: 0
},
fieldTableColumn:{
type: String,
required: false,
@ -515,11 +510,7 @@ const handleAddTable = () => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
if(props.fieldTableColumn!=''){
console.log('handleAddTable',tableAllSchemas.value.tableFormColumns.find(item=>item.field==props.fieldTableColumn))
inpuFocus(tableAllSchemas.value.tableFormColumns.find(item=>item.field==props.fieldTableColumn),tableFormKeys,0)
}else{
inpuFocus(tableAllSchemas.value.tableFormColumns[props.indexTableColumn],tableFormKeys,0)
}
}else{
emit('handleAddTable')

33
src/components/Form/src/Form.vue

@ -173,8 +173,15 @@ export default defineComponent({
// Divider
const isDivider = item.component === 'Divider'
const Com = componentMap['Divider'] as ReturnType<typeof defineComponent>
let labelName = item?.label || ''
if(item?.label){
labelName = t(`ts.${item?.label}`)
if(labelName === 'ts.' + item?.label){
labelName = item?.label
}
}
return isDivider ? (
<Com {...{ contentPosition: 'left', ...item.componentProps }}>{item?.label}</Com>
<Com {...{ contentPosition: 'left', ...item.componentProps }}>{labelName}</Com>
) : isCol ? (
// ElCol
<ElCol {...setGridProp(item.colProps)}>{renderFormItem(item)}</ElCol>
@ -218,13 +225,28 @@ export default defineComponent({
const formItemSlots: Recordable = setFormItemSlots(slots, item.field)
// labelMessage使
if (item?.labelMessage) {
let labelName = item.label || ''
if(item.label){
labelName = t(`ts.${item.label}`)
if(labelName === 'ts.' + item.label){
labelName = item.label
}
}
let labelMessage = item.labelMessage || ''
if(item.labelMessage){
labelMessage = t(`ts.${item.labelMessage}`)
if(labelMessage === 'ts.' + item.labelMessage){
labelMessage = item.labelMessage
}
}
formItemSlots.label = () => {
return (
<>
<span>{item.label}</span>
<span>{labelName}</span>
<ElTooltip placement="right" raw-content>
{{
content: () => <span v-dompurify-html={item.labelMessage}></span>,
content: () => <span v-dompurify-html={labelMessage}></span>,
default: () => (
<Icon
icon="ep:warning"
@ -244,12 +266,11 @@ export default defineComponent({
const formItemSlotsSearchList: Recordable = setFormItemSlots(slots, item.field)
if (item?.componentProps?.isSearchList) {
if(item?.componentProps?.multiple){
formItemSlotsSearchList[item.field] = () => {
return (
<>
<ElTooltip placement="top" content={formModel.value[item.field]} >
<ElInput class={'myInput'} v-model={formModel.value[item.field]} placeholder={item?.componentProps?.searchListPlaceholder} disabled={item?.componentProps?.enterSearch?false:true} onKeyup={(event)=>{
<ElInput class={'myInput'} v-model={formModel.value[item.field]} placeholder={t(`ts.${item?.componentProps?.searchListPlaceholder}`).replace('ts.','') || ''} disabled={item?.componentProps?.enterSearch?false:true} onKeyup={(event)=>{
if(event.keyCode === 13){
//
emit('onEnter',item.field,formModel.value[item.field],event)
@ -293,7 +314,7 @@ export default defineComponent({
formItemSlotsSearchList[item.field] = () => {
return (
<>
<ElInput class={'myInput'} v-model={formModel.value[item.field]} placeholder={item?.componentProps?.searchListPlaceholder} onKeyup={(event)=>{
<ElInput class={'myInput'} v-model={formModel.value[item.field]} placeholder={t(`ts.${item?.componentProps?.searchListPlaceholder}`).replace('ts.','') || ''} onKeyup={(event)=>{
if(event.keyCode === 13){
//
emit('onEnter',item.field,formModel.value[item.field],event)

8
src/components/Form/src/components/useRenderSelect.tsx

@ -3,6 +3,7 @@ import { ComponentOptions } from '@/types/components'
import { ElOption, ElOptionGroup } from 'element-plus'
import { getSlot } from '@/utils/tsxHelper'
import { Slots } from 'vue'
const { t } = useI18n()
export const useRenderSelect = (slots: Slots) => {
// 渲染 select options
@ -33,11 +34,16 @@ export const useRenderSelect = (slots: Slots) => {
const valueAlias = item?.componentProps?.optionsAlias?.valueField
const { label, value, ...other } = option
const zhName = labelAlias ? option[labelAlias] : label;//中文名称
let labelName = t(`ts.${zhName}`)
if(labelName === 'ts.' + zhName){
labelName = zhName
}
return (
<ElOption
{...other}
label={labelAlias ? option[labelAlias] : label}
label={labelName}
value={valueAlias ? option[valueAlias] : value}
>
{{

33
src/components/ImportForm/src/ImportForm.vue

@ -1,6 +1,6 @@
<!-- 导入组件 -->
<template>
<Dialog v-model="dialogVisible" title="导入" width="600" :close-on-click-modal="false">
<Dialog v-model="dialogVisible" :title="t('ts.导入')" width="600" :close-on-click-modal="false">
<el-upload
ref="uploadRef"
v-model:file-list="fileList"
@ -30,29 +30,29 @@
style="width: 300px; margin: 0 auto"
v-loading="formLoading"
>
<Icon icon="ep:upload-filled" color="#c0c4cc" size="60" />
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<Icon icon="ep:upload-filled" color="#c0c4cc" :size="60" />
<div class="el-upload__text">{{t('ts.将文件拖到此处,或')}}<em>{{t('ts.点击上传')}}</em></div>
<template #tip>
<div class="el-upload__tip ml--126px mr--80px">
<div class="flex">
<div
class="label h-32px mr-26px color-#acaeb3 font-size-14px w-100px text-right"
style="line-height: 32px"
>导入模式</div
>{{t('ts.导入模式')}}</div
>
<div class="">
<div class="radio">
<el-radio-group v-model="mode">
<el-radio :label="1" :disabled="updateIsDisable">更新</el-radio>
<el-radio :label="2" :disabled="appendIsDisable">追加</el-radio>
<el-radio :label="3" :disabled="coverIsDisable">覆盖</el-radio>
<el-radio :label="1" :disabled="updateIsDisable">{{ t('ts.更新')}}</el-radio>
<el-radio :label="2" :disabled="appendIsDisable">{{ t('ts.追加') }}</el-radio>
<el-radio :label="3" :disabled="coverIsDisable">{{ t('ts.覆盖') }}</el-radio>
</el-radio-group>
</div>
<div class="tips color-#acaeb3 font-size-14px">
<div class="mt-2">更新新增并修改</div>
<div class="mt-2">追加只新增不修改</div>
<div class="mt-2">覆盖只修改不新增</div>
<div class="mt-2">{{t('ts.更新:新增并修改')}}</div>
<div class="mt-2">{{ t('ts.追加:只新增,不修改') }}</div>
<div class="mt-2">{{ t('ts.覆盖:只修改不新增') }}</div>
</div>
</div>
</div>
@ -60,15 +60,15 @@
<div
class="label h-32px mr-26px color-#acaeb3 font-size-14px w-100px text-right"
style="line-height: 32px"
>部分保存</div
>{{ t('ts.部分保存') }}</div
>
<div class="">
<div class="switch">
<el-switch v-model="updatePart" />
</div>
<div class="tips color-#acaeb3 font-size-14px">
<div class="mt-2">部分保存如存在错误数据正确数据正常导入</div>
<div class="mt-2">全部保存全部数据正确才能导入</div>
<div class="mt-2">{{ t('ts.部分保存:如存在错误数据,正确数据正常导入') }}</div>
<div class="mt-2">{{ t('ts.全部保存:全部数据正确,才能导入') }}</div>
</div>
</div>
</div>
@ -92,11 +92,11 @@
<div class="flex-1 text-left">
<el-button type="primary" plain @click="importTemplate">
<Icon icon="ep:download" />
下载模板
{{ t('ts.下载模板') }}
</el-button>
</div>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button :disabled="formLoading" type="primary" @click="submitForm">{{ t('ts. ') }}</el-button>
<el-button @click="dialogVisible = false">{{ t('ts.取 消') }}</el-button>
</div>
</template>
</Dialog>
@ -106,6 +106,7 @@ import { getAccessToken, getTenantId } from '@/utils/auth'
import download from '@/utils/download'
defineOptions({ name: 'ImportForm' })
const { t } = useI18n()
const message = useMessage() //

57
src/components/SearchHigh/src/SearchHigh.vue

@ -1,42 +1,42 @@
<template>
<!-- 高级筛选界面 -->
<Dialog title="筛选" v-model="popoverVisible" :width="'50%'" >
<Dialog :title="t('ts.筛选')" v-model="popoverVisible" :width="'50%'" >
<el-form id="moreListElForm" size="default" labelWidth="0" :searchData="moreListData">
<el-form-item v-for="(item, index) in moreListData.filters" :key="index" :prop="item.column" >
<!-- 第一列 label-->
<div class="rowInnerItem">
<el-select v-model="item.column" placeholder="请选择筛选对象" :disabled="item.hide" :filterable="true" @change="resetSelect(item)" >
<el-option v-for="(item, index) in searchOption_high" :key="index" :label="item.label" :value="item.field" />
<el-select v-model="item.column" :placeholder="t('ts.请选择筛选对象')" :disabled="item.hide" :filterable="true" @change="resetSelect(item)" >
<el-option v-for="(item, index) in searchOption_high" :key="index" :label="t(`ts.${item.label}`).replace('ts.','')" :value="item.field" />
</el-select>
</div>
<!-- 第二列 条件-->
<div class="rowInnerItem">
<el-select v-model="item.action" placeholder="请选择条件" :disabled="item.column == '' || item.hide ? true : false" @change="actionSelect(item)" >
<el-option v-for="item in formatMoreListActions(item) " :key="item.value" :label="item.label"
<el-select v-model="item.action" :placeholder="t('ts.请选择条件')" :disabled="item.column == '' || item.hide ? true : false" @change="actionSelect(item)" >
<el-option v-for="item in formatMoreListActions(item) " :key="item.value" :label="t(`ts.${item.label}`).replace('ts.','')"
:value="item.value" />
</el-select>
</div>
<!-- 第三列 -->
<div class="rowInnerItem1">
<!-- 输入框 -->
<el-input v-if="getInputType(item.column) == 'input'" v-model="item.value" placeholder="请输入内容" clearable :disabled="item.disabled"/>
<el-input v-if="getInputType(item.column) == 'input'" v-model="item.value" :placeholder="t('ts.请输入内容')" clearable :disabled="item.disabled"/>
<!-- 数字输入框 -->
<el-input-number v-else-if="getInputType(item.column) == 'inputNumber'" v-model="item.value" :precision="getInputPrecision(item.column)" :disabled="item.disabled"/>
<!-- 下拉框 -->
<el-select v-else-if="getInputType(item.column) == 'select'" v-model="item.value1" placeholder="请选择内容" :filterable="true" clearable :disabled="item.disabled" :multiple="item.action=='in' || item.action=='notIn' ? true : false" collapse-tags collapse-tags-tooltip :key="item.action">
<el-option v-for="dict in initSelectOptions(item.column)" :key="dict.value" :label="dict.label"
<el-select v-else-if="getInputType(item.column) == 'select'" v-model="item.value1" :placeholder="t('ts.请选择内容')" :filterable="true" clearable :disabled="item.disabled" :multiple="item.action=='in' || item.action=='notIn' ? true : false" collapse-tags collapse-tags-tooltip :key="item.action">
<el-option v-for="dict in initSelectOptions(item.column)" :key="dict.value" :label="t(`ts.${dict.label}`).replace('ts.','')"
:value="dict.value" />
<!-- <el-option v-for="(op, index) in initSelectOptions(item.column)" :label="op[item.optionsLabel] || op.label"
:value="op[item.optionsValue] || op.value" :key="index" /> -->
</el-select>
<!-- 时间 -->
<el-time-picker v-else-if="getInputType(item.column) == 'time'" range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" v-model="item.value1" style="width: calc(100% - 20px);margin-right: 10px;" :disabled="item.disabled"/>
<el-time-picker v-else-if="getInputType(item.column) == 'time'" range-separator="-" :start-placeholder="t('ts.开始时间')" :end-placeholder="t('ts.结束时间')" v-model="item.value1" style="width: calc(100% - 20px);margin-right: 10px;" :disabled="item.disabled"/>
<!-- 日期 -->
<el-date-picker v-else-if="getInputType(item.column) == 'date'" v-model="item.value1" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" style="width: calc(100% - 20px);margin-right: 10px;" @change="changeDateTimePicker($event, item,'daterange')" value-format="YYYY-MM-DD" format="YYYY/MM/DD" :disabled="item.disabled"/>
range-separator="-" :start-placeholder="t('ts.开始日期')" :end-placeholder="t('ts.结束日期')" style="width: calc(100% - 20px);margin-right: 10px;" @change="changeDateTimePicker($event, item,'daterange')" value-format="YYYY-MM-DD" format="YYYY/MM/DD" :disabled="item.disabled"/>
<!-- 日期时间 -->
<el-date-picker v-else-if="getInputType(item.column) == 'datePicker'" v-model="item.value1" type="datetimerange"
range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" style="width: calc(100% - 20px);margin-right: 10px;" @change="changeDateTimePicker($event, item, 'datetimerange')" value-format="x" format="YYYY/MM/DD HH:mm:ss" :disabled="item.disabled"/>
range-separator="-" :start-placeholder="t('ts.开始时间')" :end-placeholder="t('ts.结束时间')" style="width: calc(100% - 20px);margin-right: 10px;" @change="changeDateTimePicker($event, item, 'datetimerange')" value-format="x" format="YYYY/MM/DD HH:mm:ss" :disabled="item.disabled"/>
</div>
<!-- 删除条件按钮 -->
<el-button type="danger" :icon="Minus" circle size="small"
@ -45,7 +45,7 @@
</el-form>
<!-- 添加筛选条件 -->
<div class="moreListPush-btn">
<span @click="moreListPush">+ 添加筛选条件</span>
<span @click="moreListPush">+ {{ t('ts.添加筛选条件') }}</span>
</div>
<!-- 按钮 -->
<div class="moreListBaseBts" >
@ -57,6 +57,7 @@
import { Minus } from '@element-plus/icons-vue'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
const { t } = useI18n()
const props = defineProps({
// name
@ -92,46 +93,46 @@ const moreListOptions = ref({
action: [
{
value: '==',
label: '等于'
label: t('ts.等于')
}, {
value: '!=',
label: '不等于'
label: t('ts.不等于')
}, {
value: '>',
label: '大于'
label: t('ts.大于')
}, {
value: '<',
label: '小于'
label: t('ts.小于')
}, {
value: '>=',
label: '大于等于'
label: t('ts.大于等于')
}, {
value: '<=',
label: '小于等于'
label: t('ts.小于等于')
}, {
value: 'like',
label: '模糊'
label: t('ts.模糊')
}, {
value: 'in',
label: '包含'
label: t('ts.包含')
}, {
value: 'notIn',
label: '不包含'
label: t('ts.不包含')
}, {
value: 'betweeen',
label: '区间'
label: t('ts.区间')
}, {
value: 'isNull',
label: '是空'
label: t('ts.是空')
}, {
value: 'isNotNull',
label: '不是空'
label: t('ts.不是空')
}, {
value: 'isStr',
label: '是空字符串'
label: t('ts.是空字符串')
}, {
value: 'isNotStr',
label: '不是空字符串'
label: t('ts.不是空字符串')
}
]
})
@ -178,9 +179,9 @@ const formatMoreListActions = (val) => {
// -
const moreListDelete = (val,item,$event) => {
if (moreListData.value.filters.length == 1) {
message.warning('必须保留一条筛选条件!')
message.warning(t('ts.必须保留一条筛选条件!'))
} else {
message.confirm('您确定删除吗, 是否继续?').then(() => {
message.confirm(t('ts.您确定删除吗, 是否继续?')).then(() => {
moreListData.value.filters.splice(val, 1)
})
}

9
src/components/SearchTable/src/SearchTable.vue

@ -31,6 +31,8 @@
<div class="flex items-center">
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="searchDialogVisible = false"> </el-button>
<slot name="actions"></slot>
</div>
</template>
</Dialog>
@ -38,7 +40,7 @@
<script setup lang="ts">
import * as defaultButtons from '@/utils/disposition/defaultButtons'
// const { t } = useI18n() //
const { t } = useI18n() //
const message = useMessage() //
const route = useRoute() //
@ -73,7 +75,7 @@ const openData = (titleName: any, tableObject:any ,allSchemas: any,multiple: any
HeadButttondata.value = [
defaultButtons.defaultFilterBtn(null), //
]
dialogTitle.value = titleName
dialogTitle.value = t(`ts.${titleName}`).replace('ts.','')
tableObjectRef.value = tableObject
searchDialogVisible.value = true
multipleBol.value = multiple
@ -103,7 +105,8 @@ const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, s
rowRef.value = row
multipleBol.value = multiple
// dialogTitle.value = t('action.' + type)
dialogTitle.value = titleName
dialogTitle.value = t(`ts.${titleName}`).replace('ts.','')
const {tableObject, tableMethods } = useTable({
getListApi: getPage.value //
})

21
src/components/TableForm/src/TableForm.vue

@ -19,7 +19,7 @@
v-if="isShowReduceButton"
v-slot="{ row, $index }"
>
<Icon icon="ep:remove" color="#757575" size="26" style="cursor: pointer;margin-top: -16px;" @click="handleDeleteTable (row, $index)" />
<Icon icon="ep:remove" color="#757575" :size="26" style="cursor: pointer;margin-top: -16px;" @click="handleDeleteTable (row, $index)" />
</el-table-column>
<!-- 多选 -->
<el-table-column
@ -33,7 +33,7 @@
<el-table-column
type="index"
fixed="left"
label="序号"
:label="t(`ts.序号`)"
width="80"
:align="'center'"
v-if="isShowIndex"
@ -43,7 +43,7 @@
v-for="(headerItem) in tableFields"
:key="headerItem"
:fixed="headerItem.tableForm?.fixed"
:label="headerItem.label" :prop="headerItem.field"
:label="t(`ts.${headerItem.label}`).replace('ts.','')" :prop="headerItem.field"
:align="headerItem?.tableForm?.align || 'center'"
:sortable="headerItem?.tableForm?.sortable || false"
:width="headerItem?.tableForm?.width || '200px'"
@ -122,7 +122,7 @@
@blur="tableFormSelectOnBlur(headerItem.field, $event,row, $index)">
<el-option
v-for="op in initSelectOptions(headerItem)"
:label="op.label"
:label="t(`ts.${op.label}`).replace('ts.','')"
:value="op.value"
:key="op.value" />
</el-select>
@ -149,12 +149,12 @@
<el-option-group
v-for="group in initSelectOptions(headerItem)"
:key="group.type"
:label="group.name"
:label="t(`ts.${group.name}`).replace('ts.','')"
>
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:label="t(`ts.${item.label}`).replace('ts.','')"
:value="item.value"
/>
</el-option-group>
@ -250,7 +250,7 @@
<el-radio
v-for="(item, index) in initSelectOptions(headerItem)"
:key="index"
:label="item.value"
:label="t(`ts.${item.value}`).replace('ts.','')"
:size="headerItem?.tableForm?.size"
:disabled="itemIsDisabled(headerItem, row)"
:border="headerItem?.tableForm?.border">
@ -273,10 +273,10 @@
<el-checkbox
v-for="(item, index) in initSelectOptions(headerItem)"
:key="index"
:label="item.value"
:label="t(`ts.${item.value}`).replace('ts.','')"
:disabled="itemIsDisabled(headerItem, row)"
:true-label="headerItem?.tableForm?.trueLabel"
:false-label="headerItem?.tableForm?.falseLabel"
:true-label="t(`ts.${headerItem?.tableForm?.trueLabel}`).replace('ts.','')"
:false-label="t(`ts.${headerItem?.tableForm?.falseLabel}`).replace('ts.','')"
:border="headerItem?.tableForm?.border"
:size="headerItem?.tableForm?.size"
:name="headerItem?.tableForm?.name"
@ -310,6 +310,7 @@
</template>
<script lang="ts" setup>
const { t } = useI18n() //
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
const props = defineProps({
//

20
src/components/rowDrop/index.vue

@ -1,7 +1,7 @@
<template>
<!-- <Dialog title="字段设置" width="270" v-model="popoverVisible" :scroll="true" :maxHeight="500"> -->
<div class="test_wrapper" @dragover="dragover($event)">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handlecheckallchange">全部</el-checkbox>
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handlecheckallchange">{{ t('ts.全部') }}</el-checkbox>
<el-checkbox-group v-model="checkedDataList" @change="handlecheckedchange">
<draggable :list="allData" :force-fallback="true" chosen-class="chosen" animation="300" @end="dragend" @update="dragenter" >
<template #item="{element}">
@ -12,8 +12,8 @@
</div>
<div class="footer">
<!-- <template #footer> -->
<el-button size="small" @click="reset">重置</el-button>
<el-button size="small" @click="closeRowDrop">关闭</el-button>
<el-button size="small" @click="reset">{{ t('ts.重置') }} </el-button>
<el-button size="small" @click="closeRowDrop"> {{ t('ts.关闭') }}</el-button>
<!-- </template> -->
</div>
<!-- </Dialog> -->
@ -25,6 +25,7 @@ import draggable from "vuedraggable";
defineOptions({ name: 'RowDrop' })
const { t } = useI18n()
const props = defineProps({
allSchemas: {
@ -58,9 +59,9 @@ const handlecheckedchange = (value: string[]) => {
}
const reset = () => {
ElMessageBox.confirm('重置后,字段设置将恢复初始设置,是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(t('ts.重置后,字段设置将恢复初始设置,是否继续?'), t('ts.提示'), {
confirmButtonText: t('ts.确定'),
cancelButtonText: t('ts.取消'),
type: 'warning'
}).then(() => {
RedisApi.deleteRedis(routeName.value).then(() => {
@ -148,10 +149,11 @@ const initSelectSta = () => {
if (item.field != 'action') {
checkedDataList.value.push(item.label)
_showTableColumns.push(_myTableColumns.find(myItem => (myItem.label == item.label)))
allData.value.push(item.label)
allData.value.push(t(`ts.${item.label}`))
}
}
})
//
_myTableColumns?.forEach((myTableItem, index) => {
//
@ -159,7 +161,7 @@ const initSelectSta = () => {
if (!myTableItem.fixed) {
if (myTableItem.field != 'action') {
if (allData.value.indexOf(myTableItem.label) == -1) {
allData.value.push(myTableItem.label)
allData.value.push(t(`ts.${myTableItem.label}`))
}
}
}
@ -189,7 +191,7 @@ const initSelectSta = () => {
if (!item.fixed) {
if (item.field != 'action') {
checkedDataList.value.push(item.label)
allData.value.push(item.label)
allData.value.push(t(`ts.${item.label}`))
}
}
})

4
src/layout/components/Breadcrumb/src/Breadcrumb.vue

@ -54,10 +54,10 @@ export default defineComponent({
{meta?.icon && breadcrumbIcon.value ? (
<>
<Icon icon={meta.icon} class="mr-[2px]" svgClass="inline-block"></Icon>
{t(v?.meta?.title)}
{t(`ts.${v?.meta?.title}`).replace('ts.','')}
</>
) : (
t(v?.meta?.title)
t(`ts.${v?.meta?.title}`).replace('ts.','')
)}
</ElBreadcrumbItem>
)

4
src/layout/components/Menu/src/components/useRenderMenuTitle.tsx

@ -9,10 +9,10 @@ export const useRenderMenuTitle = () => {
return icon ? (
<>
<Icon icon={meta.icon}></Icon>
<span class="v-menu__title">{t(title as string)}</span>
<span class="v-menu__title">{t(`ts.${title}` as string).replace('ts.','')}</span>
</>
) : (
<span class="v-menu__title">{t(title as string)}</span>
<span class="v-menu__title">{t(`ts.${title}` as string).replace('ts.','')}</span>
)
}

2
src/layout/components/TagsView/src/TagsView.vue

@ -367,7 +367,7 @@ watch(
:size="12"
class="mr-5px"
/>
{{ t(item?.meta?.title as string) }}
{{ t(`ts.${item?.meta?.title}` as string).replace('ts.','') }}
<Icon
:class="`${prefixCls}__item--close`"
color="#333"

388
src/locales/en-US.ts

@ -611,6 +611,11 @@ export default {
code:'Code',
name:'Name',
},
ts: {
:'Code',
:'All',
@ -628,14 +633,14 @@ export default {
:'Document Number',
:'Order Type',
:'State',
:'Purchase Order Number',
:'Purchase order number',
:'Schedule',
:'Discrete',
:'Disperse',
:'Get ready',
:'Punblish',
:'Close',
:'Finished',
:'Invoice number',
:'Shipment tracking number',
:'Source Batch',
:'Destination Batch',
:'Source Package Number',
@ -653,11 +658,12 @@ export default {
:'Contact Email',
:'Bank',
:'Currency Kind',
:'Tax rate',
:'Tax Rate',
'税率(%)':'Tax Rate(%)',
:'Effective Time',
:'Expiration Time',
:'Supplier material code',
:'Supplier measuring Unit',
:'Supplier measuring unit',
:'Conversion Rate',
:'Default receiving warehouse location',
:'Creater',
@ -684,10 +690,10 @@ export default {
:'Last update time',
:'Last Updater',
:'Demand plan',
:'Request number',
:'Application Number',
:'Code from the repository',
:'to the repository code',
:'to the dock code',
:'Destination Warehouse Code',
:'Destination dock code',
:'Time window',
:'Scheduled arrival time',
:'Carriers',
@ -696,19 +702,19 @@ export default {
:'The type of outbound transaction',
:'Inbound transaction type',
:'Execution time',
:'Application timeline',
:'Application Time',
:'Deadline',
:'department',
:'Interface type',
:'Package number',
:'Order number',
:'Package Number',
:'Order Number',
:'Order quantity',
:'quantity',
:'Quantity',
:'Packing quantity',
:'The quantity measured by the supplier',
:'vendor',
:'From the location code',
:'to the location code',
:'Supplier',
:'Source Location Area Code',
:'Destination Location Area Code',
:'From the bin location group code',
:'to the bin location group code',
:'Code from the depot',
@ -719,10 +725,10 @@ export default {
:'Packing specifications',
:'Document printing',
:'Itemized list',
:'No data yet',
:'No Data',
:'supplier Shipping Request',
:'Query Field',
:'Measuring UnitSupplier batchDate of production',
:'Supplier Batch',
:'Production Date',
:'Number of shipments',
:'Primary data',
@ -733,75 +739,64 @@ export default {
:'Supplier shipments Repository code',
:'Shipping method License plate number',
:'Auto-submit',
:'Automatically passed',
:'Auto-execute',
:'Automated',
:'Generate records directly',
:'Details',
:'Batch',
:'Date of manufacture',
:'Arrival date',
:'Expiration date',
:'Supplier unit of measure',
:'Conversion rate',
:'Material Name',
1:'Material Description1',
2:'Material Description2',
:'Item Code',
:'Quality inspection details',
:'Add Attachment',
:'Please enter a comment',
:'Changelog',
:'Add details',
:'Change Record',
:'Add Detail',
:'Upload quality report',
:'Upload the quality inspection report',
:'Supplier lots',
:'piece',
:'sheet',
:'gram',
:'g',
:'kg',
:'ton',
:'rice',
:'square metre',
:'Generate labels',
:'Create a label',
:'t',
:'m',
:'',
:'Generate label',
:'Create label',
1:'Packing Specification1',
2:'Package Specification2',
1:'Package Quantity1',
2:'Package Quantity2',
:'Item packaging information',
:'System prompts',
:'System Prompt',
:'Do you generate labels for this data?',
:'Do you process the selected data?',
:'shipments',
:'Package number',
:'Label information',
:'Purchase receipt records',
:'Form data',
:'Task ticket number',
:'Purchase receipt record',
:'Form Data',
:'Task order number',
ERP单据号:'ERP document number',
:'Inspection requisition number',
:'Purchase order number',
:'The name of the item',
:'Data source',
:'From the range of reservoir types',
:'to the depot type range',
:'From the range of depot codes',
:'to the range of codes in the reservoir',
:'Data Source',
:'Source Location Type Range',
:'Destination Location Type Range',
:'Source Location Area Code Range',
:'Destination Location Area Code Range',
:'Effective Date',
:'Receipt details',
:'Out-of-stock details',
:'Row type',
:'The quantity received',
:'to the batch',
:'From the package number',
:'to the package number',
:'Inventory status',
:'From the bin location group',
:'to the bin location group',
:'From the reservoir area',
:'to the reservoir area',
:'from the owner of the goods',
:'to the owner of the goods',
:'Receipt Detail',
:'Stockout Detail',
:'Row Type',
:'Quantity Received',
:'Inventory Status',
:'Source Location Group',
:'Destination Location Group',
:'Source Location Area',
:'Destination Location Area',
:'Source Shipper',
:'Destination Shipper',
退:'Purchase return records',
:'Purchase receipt record number',
qad采购退货记录单号:'QAD purchase return record number',
@ -809,8 +804,56 @@ export default {
:'Cause',
退:'Number of returns',
:'unit',
:'amount',
:'Amount',
:'Customer Code',
:'Supplier invoice request',
:'Supplier Name',
:'Tax',
:'After-tax Amount',
:'Discount Amount',
:'Adjusted Tax',
:'Under Coverage',
:'Gold tax ticket number',
:'Invoice Date',
:'Posting Date',
:'Financial Approver',
:'Document Type',
:'Contract Price',
:'Orocurement Price',
:'Untaxed Difference',
:'Difference including tax',
:'Number of tickets available',
:'Procurement Approver',
:'Purchase approval time',
:'Financial approval time',
:'Supplier invoice record',
:'Invoice Number',
:'Total price with tax',
:'Margin',
:'Claim Amount',
:'Invoice Time',
:'Difference',
:'Date of taking the delivery',
:'Invoice Quantity',
:'Financial approval user name',
:'Logistics Audit',
:'Supplier delivery date',
:'Supplier receiving date',
:'Logistics document number',
:'Part Number',
:'Supplier user association management',
ID:'User ID',
:'User Account',
:'User Nickname',
:'Order',
:'Plan',
:'Request',
:'Job',
:'Record',
:'Number',
:'Location Code',
:'Location Group Code',
:'Location Area Code',
:'Query',
:'Reset',
:'Add',
@ -820,45 +863,206 @@ export default {
:'Filter',
:'Settings',
:'Confirm',
'确 定':'Confirm',
:'Cancel',
'取 消':'Cancel',
:'Edit',
:'Delete',
:'Add Filter',
:'Go to',
:'Page',
:'Total',
:'Open',
:'Save',
//--------
// 单据打印:'Document Print',
// 上传质量报告:'Upload Quality Report',
// 打印标签:'Print Label',
// 发货:'Delivery',
// 生成标签:'Generate Label',
// 发送到货检验申请:'Send Arrival Inspection Application',
// 生成采购上架申请:'Generate Purchase Putaway Application',
// 生成生产计划单:'Generate Production Plan',
// 提交审批:'Submit Approval',
// 审核通过:'Approve',
// 作废:'Invalid',
//--------
// 生成采购收货申请:'Generate Purchase Receiving Application',
// 生成采购退货申请:'Generate Purchase Return Application',
// 生成生产收货申请:'Generate Production Receiving Application',
// 生成生产退货申请:'Generate Production Return Application',
// 生成生产计划:'Generate Production Plan',
// 上传:'Upload',
// 打印:'Print',
// 打印预览:'Print Preview',
// 打印设置:'Print Settings',
// 打印预览设置:'Print Preview
// 上传图片:'Upload Image',
// 上传文件:'Upload File',
// 上传视频:'Upload Video',
// 上传音频:'Upload Audio',
// 上传其他:'Upload Other',
// 上传图片:'Upload Image',
// 上传文件:'Upload File',
// 上传视频:'Upload Video',
// 上传音频:'Upload Audio',
// 上传其他:'Upload Other',
:'Please select filter',
:'Please inputr content',
:'Attachment',
'更新:新增并修改':'Update:Add and modify',
'追加:只新增,不修改':'Add:Add,no modify',
'覆盖:只修改不新增':'Cover:Modify,not add',
:'Download Template',
:'Update',
:'Add',
:'Cover',
:'Save Partial',
'部分保存:如存在错误数据,正确数据正常导入':'Save Partial :If incorrect data exists, correct data can be imported',
'全部保存:全部数据正确,才能导入':'Save All:Import only when all data is correct',
'将文件拖到此处,或点击上传':'Drag the file here, or click Upload',
'将文件拖到此处,或':'Drag the file here, or',
'点击上传':' click Upload',
'是否确认导出数据项?':'Are you sure to export data items?',
'请选择一条数据!':'Please select a piece of data!',
:'Equal to',
:'Not Equal to',
:'Greater than',
:'Less than',
:'Greater than or equal to',
:'Less than or equal to',
:'obscure',
:'contain',
:'Not included',
:'is empty',
:'not empty',
:'is an empty string',
:'Not an empty string',
:'Search',
:'Start Date',
:'Ending Date',
:'Serial Number',
:'Version',
:'Place',
'影响明细中物料代码,需在供应商物料中维护':'The material code in the details is affected , must be maintained in the supplier\'s material',
:'External resource or not',
:'Import Mode',
:'Please select content',
:'Please select condition',
:'Interval',
'您确定删除吗, 是否继续?':'Are you sure about deleting it? Do you want to continue?',
'必须保留一条筛选条件!':'One filter must be preserved!',
'请填写供应商代码!':'Please fill in the supplier code!',
:'Supplier Integration',
:'Material basic information',
:'Location Information',
:'Purchase order information',
:'Supplier material information',
:'Demand plan information',
:'User Information',
:'Please select a supplier',
:'Please select a vendor code',
:'Please select material code',
:'Please input the supplier material code',
:'Please input the location code',
ERP库位:'ERP Location Code',
:'Unit Price',
'是否发布所选中数据?':'Do you publish the selected data?',
'是否关闭所选中数据?':'Do you want to close the selected data?',
'发布成功!':'Release Successfully!',
'是否下架所选中数据?':'Do you want to remove selected data?',
'下架成功!':'Removed Successfully!',
'采购订单主':'Purchase order master data',
'采购订单主导入模版':'The purchase order leads into the template',
'是否打开所选中数据?':'Open the selected data?',
'打开成功!':'Open Successfully!',
'关闭成功!':'Closed Successfully',
'失效时间要大于生效时间':'The expiration time must be longer than the effective time',
'供应商导入模版':'Supplier import template',
'供应商物料':'Supplier Material',
'供应商物料导入模版':'Supplier material import template',
'采购价格单':'Purchase price sheet',
'采购价格单导入模版':'Purchase price list import template',
:'Planned Quantity',
:'Shipped Quantity',
:'Received Quantity',
退:'Returned Quantity',
:'Stocked Quantity',
:'Start Using',
:'Disable',
:'Terminate',
:'Get',
:'Accomplish',
:'Binding',
:'Readd',
:'Sold Out',
:'Amend',
:'Reject',
:'Accept',
:'Undertake',
:'Abandon',
:'Receiving',
:'Packaging',
:'print Label',
:'Bulk Print',
:'Generate purchase receipt request',
:'Send the arrival inspection request',
:'Generate a purchase listing request',
:'Generate inventory adjustment request',
:'New Inventory',
:'Unfreeze',
:'Update inspection record',
使:'Usage Decision',
'是否接受所选中数据?':'Do you accept the selected data?',
'接受成功!':'Accept Successfully!',
'是否驳回所选中数据?':'Do you reject the selected data?',
'驳回成功!':'Reject Succussfully!',
'要货计划主':'Ask for master data of cargo plan',
'要货计划数量不得大于订单数量-已计划数量':'The planned quantity of the requested goods shall not be greater than the order quantity - the planned quantity',
'子列表数量不能空':'The number of sublists cannot be empty',
'要货计划主导入模版':'The request plan leads into the template',
:'already exists',
:'Refusal',
:'Approve',
:'Demand forecast master data',
:'Create a supplier shipping request',
'是否重新打开所选中数据?':'Do you want to reopen the selected data?',
'请先上传自检报告!':'Please upload the self-test report first!',
'提交审批成功!':'Submitted for approval!',
'是否提交审批所选中数据?':'Do you want to submit the selected data for approval?',
'是否审批通过所选中数据?':'Is the selected data approved?',
'审批通过成功!':'Approval is successful!',
'是否处理所选中数据?':'Do you process the selected data?',
'处理成功!':'Processing success!',
:'Supplier delivery request master data',
'是否为此数据生成标签?':'Are labels generated for this data?',
:'Label created successfully',
:'Please first select the data you want to print',
:'Failed to create label',
:'The production date cannot be longer than the expiration date',
'计划到货时间大于要货计划送达日期是否继续?':'The planned arrival time is greater than the planned delivery date. Do you want to continue?',
'子表明细不能为空!':'Subindicates that the detail cannot be empty!',
:'The purchase request was successfully generated',
'确认生成采购申请吗?':'Confirm to generate purchase application?',
:'Supplier shipment record master data',
'确认生成上架申请吗?':'Are you sure to generate a listing application?',
:'The listing application was successfully generated',
'确认生成到货检验申请吗?':'Is the arrival inspection application confirmed to be generated?',
:'The arrival inspection application was successfully generated',
:'Purchase receipt record master data',
退:'Purchase return record master data',
:'Appendix to the contract',
:'Invoice Attachment',
:'Attachment to the waybill',
:'Other Attachment',
:'Print Detail',
:'Print all invoices',
:'Export Details',
:'Print',
:'Purchase Approval',
:'Purchase Rejection',
:'Supplier Confirmation',
:'Financial Approval',
:'Financial Rejection',
'是否确认发票寄出选中数据?':'Do you confirm that the invoice is sent out with selected data?',
'发票寄出成功!':'Invoice sent successfully!',
:'Supplier invoice request master data',
:'Please provide detailed data',
'明细数据条数已超过最大数量限制【999条】':'The number of detailed data items has exceeded the maximum limit [999 items]',
:'Supplier delivery request is led into the template',
:'Supplier invoice request details',
:'Supplier invoice record master data',
:'Pass the audit',
:'Cancellation',
'是否审批拒绝所选中数据?':'Do you want to approve and reject selected data?',
'审批成功!':'Approval is successful!',
:'To be invoiced',
:'Import template to be invoiced',
:'purchase order',
:'Demand forecast',
:'Supplier shipment record',
:'Supplier invoice',
:'basic data',
router: {
login: 'Login',
home: 'Home',
analysis: 'Analysis',
workplace: 'Workplace'
},
'重置后,字段设置将恢复初始设置,是否继续?':'After reset, the field Settings will be restored to the initial Settings. Do you want to continue?',
:'Tip',
:'voucher number',
:'Purchasing price approver',
:'Supplier\'s invoice number'
},
}
}

290
src/locales/zh-CN.ts

@ -618,7 +618,7 @@ export default {
},
ts: {
:'代码',
: 'All',
:'全部',
:'标准',
:'委外',
:'其它',
@ -659,6 +659,7 @@ export default {
:'银行',
:'币种',
:'税率',
'税率(%)':'税率(%)',
:'生效时间',
:'失效时间',
:'供应商物料代码',
@ -712,7 +713,6 @@ export default {
:'包装数量',
:'供应商计量数量',
:'供应商',
:'从库位代码',
:'到库位代码',
:'从库位组代码',
@ -742,6 +742,118 @@ export default {
:'自动通过',
:'自动执行',
:'直接生成记录',
:'明细',
:'批次',
:'到货日期',
:'过期日期',
:'物料名称',
1:'物料描述1',
2:'物料描述2',
:'项目代码',
:'质检明细',
:'添加附件',
:'变更记录',
:'添加明细',
:'上传质量报告',
:'上传质检报告',
:'个',
:'张',
:'克',
:'公斤',
:'吨',
:'米',
:'平方米',
:'生成标签',
:'创建标签',
1:'包装规格1',
2:'包装规格2',
1:'包装数量1',
2:'包装数量2',
:'物品包装信息',
:'系统提示',
:'是否为此数据生成标签',
:'是否处理所选中数据',
:'发货',
:'标签信息',
:'采购收货记录',
:'表单数据',
:'任务单号',
ERP单据号:'ERP单据号',
:'检验申请单号',
:'数据来源',
:'从库区类型范围',
:'到库区类型范围',
:'从库区代码范围',
:'到库区代码范围',
:'生效日期',
:'收货明细',
:'缺货明细',
:'行类型',
:'收货数量',
:'库存状态',
:'从库位组',
:'到库位组',
:'从库区',
:'到库区',
:'从货主',
:'到货主',
退:'采购退货记录',
:'采购收货记录单号',
qad采购退货记录单号:'qad采购退货记录单号',
:'从月台代码',
:'原因',
退:'退货数量',
:'单位',
:'金额',
:'客户代码',
:'供应商发票申请',
:'供应商名称',
:'税额',
:'税后金额',
:'折扣金额',
:'调整税额',
:'总差额',
:'金税票号',
:'发票日期',
:'过账日期',
:'财务审批人',
:'单据类型',
:'合同价格',
:'采购价格',
:'未税差额',
:'含税差额',
:'可开票数量',
:'采购审批人',
:'采购审批时间',
:'财务审批时间',
:'供应商发票记录',
:'发票号',
:'价税合计',
:'价差',
:'索赔金额',
:'发票时间',
:'差额',
:'收货日期',
:'开票数量',
:'财务审批用户名',
:'物流审核',
:'供应商送货日期',
:'物流收货日期',
:'物流单据号',
:'零件号',
:'供应商用户关联管理',
ID:'用户ID',
:'用户账号',
:'用户昵称',
:'订单',
:'计划',
:'申请',
:'任务',
:'记录',
:'编号',
:'库位代码',
:'库位组代码',
:'库区代码',
:'查询',
:'重置',
:'新增',
@ -751,14 +863,98 @@ export default {
:'筛选',
:'设置',
:'确定',
'确 定':'确 定',
:'取消',
'取 消':'取 消',
:'编辑',
:'删除',
:'添加附件',
:'添加筛选条件',
:'前往',
:'页',
:'共',
:'打开',
:'保存',
//////
:'请选择筛选对象',
:'请输入内容',
:'附件',
'更新:新增并修改':'更新:新增并修改',
'追加:只新增,不修改':'追加:只新增,不修改',
'覆盖:只修改不新增':'覆盖:只修改不新增',
:'下载模板',
:'更新',
:'追加',
:'覆盖',
:'部分保存',
'部分保存:如存在错误数据,正确数据正常导入':'部分保存:如存在错误数据,正确数据正常导入',
'全部保存:全部数据正确,才能导入':'全部保存:全部数据正确,才能导入',
'将文件拖到此处,或点击上传':'将文件拖到此处,或点击上传',
'将文件拖到此处,或':'将文件拖到此处,或',
'点击上传':'点击上传',
'是否确认导出数据项?':'是否确认导出数据项?',
'请选择一条数据!':'请选择一条数据!',
:'等于',
:'不等于',
:'大于',
:'小于',
:'大于等于',
:'小于等于',
:'模糊',
:'包含',
:'不包含',
:'是空',
:'不是空',
:'是空字符串',
:'不是空字符串',
:'搜索',
:'开始日期',
:'结束日期',
:'序号',
:'版本',
:'地点',
'影响明细中物料代码,需在供应商物料中维护':'影响明细中物料代码,需在供应商物料中维护',
:'是否外部资源',
:'导入模式',
:'请选择内容',
:'请选择条件',
:'区间',
'您确定删除吗, 是否继续?':'您确定删除吗, 是否继续?',
'必须保留一条筛选条件!':'必须保留一条筛选条件!',
'请填写供应商代码!':'请填写供应商代码!',
:'供应商信息',
:'物料基础信息',
:'库位信息',
:'采购订单信息',
:'供应商物料信息',
:'要货计划信息',
:'用户信息',
:'请选择供应商',
:'请选择供应商代码',
:'请选择物料代码',
:'请输入供应商物料代码',
:'请选择库位代码',
ERP库位:'ERP库位',
:'单价',
'是否发布所选中数据?':'是否发布所选中数据?',
'是否关闭所选中数据?':'是否关闭所选中数据?',
'发布成功!':'发布成功!',
'是否下架所选中数据?':'是否下架所选中数据?',
'下架成功!':'下架成功!',
'采购订单主':'采购订单主',
'采购订单主导入模版':'采购订单主导入模版',
'是否打开所选中数据?':'是否打开所选中数据?',
'打开成功!':'打开成功!',
'关闭成功!':'关闭成功!',
'失效时间要大于生效时间':'失效时间要大于生效时间',
'供应商导入模版':'供应商导入模版',
'供应商物料':'供应商物料',
'供应商物料导入模版':'供应商物料导入模版',
'采购价格单':'采购价格单',
'采购价格单导入模版':'采购价格单导入模版',
:'已计划数量',
:'已发货数量',
:'已收货数量',
退:'已退货数量',
:'已上架数量',
:'启用',
:'禁用',
:'中止',
@ -781,13 +977,93 @@ export default {
:'生成采购上架申请',
:'生成盘点调整申请',
:'重盘',
:'监盘',
:'解冻',
:'更新检验记录',
使:'使用决策'
使:'使用决策',
'是否接受所选中数据?':'是否接受所选中数据?',
'接受成功!':'接受成功!',
'是否驳回所选中数据?':'是否驳回所选中数据?',
'驳回成功!':'驳回成功!',
'要货计划主':'要货计划主',
'要货计划数量不得大于订单数量-已计划数量':'要货计划数量不得大于订单数量-已计划数量',
'子列表数量不能空':'子列表数量不能空',
'要货计划主导入模版':'要货计划主导入模版',
:'已经存在',
:'驳回',
:'审批通过',
:'要货预测主',
:'创建供应商发货申请',
'是否重新打开所选中数据?':'是否重新打开所选中数据?',
'请先上传自检报告!':'请先上传自检报告!',
'提交审批成功!':'提交审批成功!',
'是否提交审批所选中数据?':'是否提交审批所选中数据?',
'是否审批通过所选中数据?':'是否审批通过所选中数据?',
'审批通过成功!':'审批通过成功!',
'是否处理所选中数据?':'是否处理所选中数据?',
'处理成功!':'处理成功!',
:'供应商发货申请主',
'是否为此数据生成标签?':'是否为此数据生成标签?',
:'创建标签成功',
:'请先选择要打印的数据',
:'创建标签失败',
:'生产日期不可以大于过期日期',
'计划到货时间大于要货计划送达日期是否继续?':'计划到货时间大于要货计划送达日期是否继续?',
'子表明细不能为空!':'子表明细不能为空!',
:'采购申请生成成功',
'确认生成采购申请吗?':'确认生成采购申请吗?',
:'供应商发货记录主',
'确认生成上架申请吗?':'确认生成上架申请吗?',
:'上架申请生成成功',
'确认生成到货检验申请吗?':'确认生成到货检验申请吗?',
:'到货检验申请生成成功',
:'采购收货记录主',
退:'采购退货记录主',
:'合同附件t',
:'发票附件',
:'货运单附件',
:'其他附件',
:'打印明细',
:'打印全部发货单',
:'导出明细',
:'打印',
:'采购通过',
:'采购驳回',
:'供应商确认',
:'财务通过',
:'财务驳回',
'是否确认发票寄出选中数据?':'是否确认发票寄出选中数据?',
'发票寄出成功!':'发票寄出成功!',
:'供应商发票申请主',
:'请添明细数据',
'明细数据条数已超过最大数量限制【999条】':'明细数据条数已超过最大数量限制【999条】',
:'供应商发货申请主导入模版',
:'供应商发票申请明细',
:'供应商发票记录主',
:'审核通过',
:'作废',
'是否审批拒绝所选中数据?':'是否审批拒绝所选中数据?',
'审批成功!':'审批成功!',
:'待开票',
:'待开票导入模版',
:'采购订单',
:'要货预测',
:'供应商发货记录',
:'供应商发票',
:'基础数据',
router: {
login: '登录',
home: '首页',
analysis: '分析页',
workplace: '工作台'
},
'重置后,字段设置将恢复初始设置,是否继续?':'重置后,字段设置将恢复初始设置,是否继续?',
:'提示',
:'凭证号',
:'采购价格审批人',
:'供应商发货单号'
},
}
}

1
src/utils/dict.ts

@ -334,4 +334,5 @@ export enum DICT_TYPE {
BASIC_TEAM_TYPE='basic_team_type',//班组类型
TAX_RATE_DICT='tax_rate_dict', //税率
INTERFACE_STATUS = 'interfaceStatus', // 接口调用信息 接口状态
SYSTEM_DAY = 'system_day', // 系统天数
}

2
src/views/qms/selectedProject/selectedProject.data.ts

@ -29,7 +29,7 @@ export const SelectedProject = useCrudSchemas(reactive<CrudSchema[]>([
}
},
{
label: '字典项',
label: '项',
field: 'dictionaryValue',
sort: 'custom',
isSearch: true,

4
src/views/wms/basicDataManage/itemManage/packageunit/packageunit.data.ts

@ -144,7 +144,7 @@ export const Packageunit = useCrudSchemas(reactive<CrudSchema[]>([
isSearch: false,
form: {
component: 'Switch',
value: 'TRUE',
value: 'FALSE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'
@ -435,7 +435,7 @@ export const PackageunitCopy = useCrudSchemas(reactive<CrudSchema[]>([
isSearch: false,
form: {
component: 'Switch',
value: 'TRUE',
value: 'FALSE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'

8
src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue

@ -28,7 +28,7 @@
v-model:sort="tableObject.sort"
>
<template #supplierCode="{row}">
<el-button type="primary" link @click="openDetail(row, '供应商代码', row.supplierCode)">
<el-button type="primary" link @click="openDetail(row, t('ts.供应商代码'), row.supplierCode)">
<span>{{ row.supplierCode }}</span>
</el-button>
</template>
@ -183,7 +183,7 @@ const formsSuccess = async (formType,data) => {
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
message.error(t('ts.失效时间要大于生效时间'))
return;
}
}
@ -239,7 +239,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await PurchasepriceApi.exportPurchaseprice(tableObject.params)
download.excel(data, '采购价格单.xlsx')
download.excel(data, `${t('ts.采购价格单')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -254,7 +254,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '采购价格单导入模版.xlsx'
templateTitle: `${t('ts.采购价格单导入模版')}.xlsx`
})
//
const importSuccess = () => {

6
src/views/wms/basicDataManage/supplierManage/supplier/index.vue

@ -174,7 +174,7 @@ const formsSuccess = async (formType, data) => {
})
if (isHave) {
if (data.activeTime && data.expireTime && data.activeTime >= data.expireTime) {
message.error('失效时间要大于生效时间')
message.error(t('ts.失效时间要大于生效时间'))
return
}
}
@ -221,7 +221,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await SupplierApi.exportSupplier(tableObject.params)
download.excel(data, '供应商.xlsx')
download.excel(data, `${t('ts.供应商')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -236,7 +236,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '供应商导入模版.xlsx'
templateTitle: `${t('ts.供应商导入模版')}.xlsx`
})
//
const importSuccess = () => {

8
src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue

@ -28,7 +28,7 @@
v-model:sort="tableObject.sort"
>
<template #supplierCode="{row}">
<el-button type="primary" link @click="openDetail(row, '供应商代码', row.supplierCode)">
<el-button type="primary" link @click="openDetail(row, t('ts.供应商代码'), row.supplierCode)">
<span>{{ row.supplierCode }}</span>
</el-button>
</template>
@ -182,7 +182,7 @@ const formsSuccess = async (formType,data) => {
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
message.error(t('ts.失效时间要大于生效时间'))
return;
}
}
@ -238,7 +238,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await SupplieritemApi.exportSupplieritem(tableObject.params)
download.excel(data, '供应商物料.xlsx')
download.excel(data, `${t('ts.供应商物料')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -253,7 +253,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '供应商物料导入模版.xlsx'
templateTitle: `${t('ts.供应商物料导入模版')}.xlsx`
})
//
const importSuccess = () => {

108
src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts

@ -763,3 +763,111 @@ export const SaleDetailRules = reactive({
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
],
})
/**
* @returns {Array}
*/
export const SaleDetailAndMain = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '销售订单号',
field: 'number',
sort: 'custom',
table: {
width: 180
},
},
{
label: '销售订单行',
field: 'lineNumber',
sort: 'custom',
table: {
width: 150
},
},
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
table: {
width: 150
},
tableForm:{
isInpuFocusShow: true,
searchListPlaceholder: '请选择物料代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '物料基础信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}]
},
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择物料代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '物料基础信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}]
}
}
},
{
label: '批次',
field: 'batch',
sort: 'custom',
},
{
label: '客户库位',
field: 'fromLocationCode',
sort: 'custom',
isSearch: true,
isTableForm: true,
table: {
width: 150
},
},
{
label: '数量',
field: 'orderQty',
sort: 'custom',
table: {
width: 150
},
form: {
component: 'InputNumber',
componentProps: {
min: 1,
precision: 6
}
},
tableForm: {
type: 'InputNumber',
min: 1,
precision: 6
}
},
{
label: '计量单位',
field: 'uom',
dictType: DICT_TYPE.UOM,
dictClass: 'string',
isTable: true,
sort: 'custom',
table: {
width: 150
},
tableForm: {
type: 'Select'
}
}
]))

11
src/views/wms/deliversettlementManage/saleShipmentMainRecord/index.vue

@ -150,17 +150,6 @@ const openForm = (type: string, row?: any) => {
// form
const formsSuccess = async (formType,data) => {
var isHave =SaleShipmentMainRecord.allSchemas.formSchema.some(function (item) {
return item.field === 'activeTime' || item.field === 'expireTime';
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
return;
}
}
if(data.activeTime==0)data.activeTime = null;
if(data.expireTime==0)data.expireTime = null;
if (formType === 'create') {
await SaleShipmentMainRecordApi.createSaleShipmentMainRecord(data)
message.success(t('common.createSuccess'))

79
src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue

@ -28,7 +28,7 @@
v-model:currentPage="tableObject.currentPage"
v-model:sort="tableObject.sort"
>
<template #code="{row}">
<template #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
@ -42,7 +42,7 @@
<!-- 表单弹窗添加/修改 -->
<BasicForm
ref="basicFormRef"
:isOpenSearchTable="true"
:isOpenSearchTable="false"
fieldTableColumn="soLine"
@success="getList"
:rules="SaleShipmentMainRules"
@ -213,15 +213,14 @@ const butttondata = (row,$index) => {
return []
}
return [
defaultButtons.mainListEditBtn({hasPermi:'wms:sale-shipment-main-request:update'}), //
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['1','2','3','4','6']),hasPermi:'wms:sale-shipment-main-request:close'}), //
defaultButtons.mainListEditBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:sale-shipment-main-request:update'}), //
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['1','2','3','4']),hasPermi:'wms:sale-shipment-main-request:close'}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['4','5']),hasPermi:'wms:sale-shipment-main-request:reAdd'}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:sale-shipment-main-request:submit'}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:sale-shipment-main-request:refused'}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:sale-shipment-main-request:agree'}), //
defaultButtons.mainListHandleBtn({hide:isShowMainButton(row,['3']),hasPermi:'wms:sale-shipment-main-request:handle'}), //
defaultButtons.mainListEditBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:sale-shipment-main-request:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:sale-shipment-main-request:delete'}), //
// defaultButtons.mainListDeleteBtn({hasPermi:'wms:sale-shipment-main-request:delete'}), //
]
}
const tableData = ref([])
@ -229,7 +228,73 @@ const tableData = ref([])
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
if (val == 'mainClose') { //
await message.confirm('确认要关闭吗?')
tableObject.loading = true
SaleShipmentMainApi.close(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'mainReAdd') { //
await message.confirm('确认要重新添加吗?')
tableObject.loading = true
SaleShipmentMainApi.reAdd(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'mainSubmit') { //
await message.confirm('确认要提交审批吗?')
tableObject.loading = true
SaleShipmentMainApi.submit(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'mainTurnDown') { //
await message.confirm('确认要驳回吗?')
tableObject.loading = true
SaleShipmentMainApi.refused(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'mainApprove') { //
await message.confirm('确认要审批通过吗?')
tableObject.loading = true
SaleShipmentMainApi.agree(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'mainHandle') { //
await message.confirm('确认要 处理吗?')
tableObject.loading = true
SaleShipmentMainApi.handle(row.masterId).then(() => {
message.success(t('common.updateSuccess'))
tableObject.loading = false
getList()
}).catch(err => {
tableObject.loading = false
console.log(err)
})
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)

196
src/views/wms/deliversettlementManage/saleShipmentMainRequest/saleShipmentMain.data.ts

@ -5,7 +5,9 @@ import * as CustomerApi from '@/api/wms/customer'
import { Customer } from '@/views/wms/basicDataManage/customerManage/customer/customer.data'
import * as SaleDetailApi from '@/api/wms/saleDetail'
import { SaleDetail } from '@/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data'
import { SaleDetailAndMain } from '@/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data'
import * as LocationApi from '@/api/wms/location'
import { Location } from '@/views/wms/basicDataManage/factoryModeling/location/location.data'
import * as getRequestsettingApi from '@/api/wms/requestsetting/index'
// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值
@ -19,9 +21,34 @@ const queryParams = {
// 表单校验
export const SaleShipmentMainRules = reactive({
customerCode: [
{ required: true, message: '请选择客户代码', trigger: 'blur' }
],
})
export const SaleShipmentMain = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '单据号',
field: 'number',
sort: 'custom',
isSearch: true,
isForm: false,
table: {
width: 200
},
},
{
label: '状态',
field: 'status',
sort: 'custom',
table: {
width: 150
},
dictType: DICT_TYPE.REQUEST_STATUS,
dictClass: 'string',
isSearch: true,
isForm:false,
},
{
label: '客户代码',
field: 'customerCode',
@ -48,35 +75,11 @@ export const SaleShipmentMain = useCrudSchemas(reactive<CrudSchema[]>([
}
}
},
{
label: '单据号',
field: 'number',
sort: 'custom',
isSearch: true,
isForm: false,
table: {
width: 150
},
},
{
label: '业务类型',
field: 'businessType',
sort: 'custom',
isForm: false,
table: {
width: 150
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
isForm: false,
},
{
label: '发票时间',
field: 'invoiceTime',
sort: 'custom',
isSearch: true,
table: {
width: 180
},
@ -101,26 +104,33 @@ export const SaleShipmentMain = useCrudSchemas(reactive<CrudSchema[]>([
label: '地点',
field: 'siteId',
sort: 'custom',
isSearch: true,
hiddenInMain: true,
},
{
label: '部门',
field: 'departmentCode',
label: '业务类型',
field: 'businessType',
sort: 'custom',
isForm: false,
isTableForm: false,
table: {
width: 150
},
},
{
label: '状态',
field: 'status',
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
isForm: false,
isTableForm: false,
isTable: false
},
dictType: DICT_TYPE.REQUEST_STATUS,
dictClass: 'string',
isSearch: true,
{
label: '部门',
field: 'departmentCode',
sort: 'custom',
isForm: false,
isTableForm: false,
isTable: false
},
{
label: '自动提交',
@ -220,15 +230,20 @@ export const SaleShipmentMain = useCrudSchemas(reactive<CrudSchema[]>([
}
},
isForm: false,
isTableForm: false,
isTable: false
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false,
table: {
width: 150,
width: 250,
fixed: 'right'
}
},
hiddenInMain:true,
isTableForm:false,
}
]))
@ -237,30 +252,14 @@ export const SaleShipmentDetailRules = reactive({
})
export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '单据号',
field: 'number',
sort: 'custom',
isSearch: true,
table: {
width: 180
},
isTable: false,
isTableForm: false,
form: {
componentProps: {
disabled: true
}
}
},
{
label: '销售订单号',
field: 'soNumber',
sort: 'custom',
isSearch: true,
table: {
width: 150
width: 200
},
isSearch: true,
tableForm: {
type: 'Select',
disabled: true
@ -283,12 +282,17 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
searchListPlaceholder: '请选择销售订单行',
searchField: 'lineNumber',
searchTitle: '销售订单信息',
searchAllSchemas: SaleDetail.allSchemas,
searchAllSchemas: SaleDetailAndMain.allSchemas,
searchPage: SaleDetailApi.getSaleDetailPage,
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
},
{
key: 'customerCode',
value: 'customerCode',
isMainValue: true
}]
},
form: {
@ -298,7 +302,7 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
searchListPlaceholder: '请选择销售订单行',
searchField: 'lineNumber',
searchTitle: '销售订单信息',
searchAllSchemas: SaleDetail.allSchemas,
searchAllSchemas: SaleDetailAndMain.allSchemas,
searchPage: SaleDetailApi.getSaleDetailPage,
searchCondition: [{
key: 'available',
@ -314,7 +318,7 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
}
},
{
label: '物代码',
label: '物代码',
field: 'itemCode',
sort: 'custom',
isSearch: true,
@ -326,29 +330,63 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
componentProps: {
disabled: true
}
}
},
table: {
width: 150
},
},
{
label: '批次',
field: 'batch',
sort: 'custom',
isSearch: true,
},
{
label: '客户库位',
field: 'fromLocationCode',
tableForm:{
isInpuFocusShow: true, // 开启查询弹窗
searchListPlaceholder: '请选择客户库位代码',
searchField: 'code',
searchTitle: '库位基础信息',
searchAllSchemas: Location.allSchemas,
searchPage: LocationApi.selectConfigToLocation,
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}]
},
form: {
componentProps: {
isSearchList: true,
searchListPlaceholder: '请选择客户库位代码',
searchField: 'code',
searchTitle: '库位基础信息',
searchAllSchemas: Location.allSchemas,
searchPage: LocationApi.selectConfigToLocation,
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}]
}
},
},
{
label: '从货主代码',
field: 'fromOwnerCode',
sort: 'custom',
isSearch: true,
isForm: false,
isTableForm: false
isTableForm: false,
isTable: false,
},
{
label: '包装号',
field: 'packingNumber',
sort: 'custom',
isSearch: true,
isForm: false,
isTableForm: false
isTableForm: false,
isTable: false,
},
{
@ -356,7 +394,7 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
field: 'inventoryStatus',
// dictType: DICT_TYPE.INVENTORY_STATUS,
// dictClass: 'string',
isTable: true,
isTable: false,
sort: 'custom',
table: {
width: 150
@ -365,14 +403,6 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
hiddenInMain: true,
isForm: false,
},
{
label: '客户库位',
field: 'fromLocationCode',
sort: 'custom',
isSearch: true,
isTableForm: true
},
{
label: '物品名称',
field: 'itemName',
@ -391,7 +421,8 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
width: 150
},
isForm: false,
isTableForm: false
isTableForm: false,
isTable: false,
},
{
label: '物品描述2',
@ -401,13 +432,13 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
width: 150
},
isForm: false,
isTableForm: false
isTableForm: false,
isTable: false,
},
{
label: '项目代码',
field: 'projectCode',
sort: 'custom',
isSearch: true,
isTableForm: false,
hiddenInMain: true,
},
@ -415,7 +446,9 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '开票数量',
field: 'qty',
sort: 'custom',
isSearch: true,
table: {
width: 150
},
},
{
label: '计量单位',
@ -441,7 +474,7 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '备注',
field: 'remark',
sort: 'custom',
isSearch: true,
isTable: false,
isTableForm: false
},
{
@ -449,7 +482,6 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
field: 'createTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
@ -459,11 +491,13 @@ export const SaleShipmentDetail = useCrudSchemas(reactive<CrudSchema[]>([
}
},
isForm: false,
isTableForm: false
isTableForm: false,
isTable: false,
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false,
table: {
width: 150,

1
src/views/wms/productionManage/productreceiptscrap/productreceiptscrapRecordMain/productreceiptscrapRecordMain.data.ts

@ -509,6 +509,7 @@ export const ProductreceiptRecordDetail = useCrudSchemas(reactive<CrudSchema[]>(
label: '单据号',
field: 'number',
sort: 'custom',
hiddenInMain:true,
table: {
width: 180
},

59
src/views/wms/productionManage/productreceiptscrap/productreceiptscrapRequestMain/index.vue

@ -113,6 +113,8 @@
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/productreceipt-request-main/import" :importTemplateData="importTemplateData"
@success="importSuccess" :updateIsDisable="true" :coverIsDisable="true" :mode="2" />
<!-- 标签打印 -->
<SearchTable style="width:905px" ref="searchTableRef" @searchTableSuccess="searchTableSuccess1" />
</template>
<script setup lang="ts">
@ -129,6 +131,9 @@ import * as ItembasicApi from '@/api/wms/itembasic'
import * as PackageApi from '@/api/wms/package'
import { formatTime } from '@/utils/index'
import { getAccessToken } from '@/utils/auth'
import {
SupplierdeliverRequestPackage
} from '../../../purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/supplierdeliverRequestMain.data.ts'
//
defineOptions({ name: 'ProductreceiptRequestMain' })
@ -636,6 +641,7 @@ const detailValidate = (data) => {
}
const BASE_URL = import.meta.env.VITE_JMREPORT_BASE_URL
//
const handlePoint = async (row) => {
//
@ -658,16 +664,59 @@ const handlePoint = async (row) => {
})
//
if (isCreateLabel.value) {
labelPrint(row)
} else {
message.warning('请先创建标签')
}
}
const searchTableRef = ref()
//
const labelPrint = async (row) => {
tableObject.loading = true
const defaultParams = {'moduleName':'productreceipt_predict','recordNumber':row.number}
const {tableObject:tableObjectPrint ,tableMethods} = useTable({
defaultParams,
getListApi: PackageApi.getLabelDetailPage //
})
//
const { getList:getListPrint } = tableMethods
getListPrint()
tableObject.loading = false
const tableColumns = SupplierdeliverRequestPackage.allSchemas.tableFormColumns
tableColumns.forEach((item) => {
item.width = item.table?.width || 150
})
searchTableRef.value.openData("标签信息",tableObjectPrint,{tableColumns},true)
}
// --
const searchTableSuccess1 = async (formField, searchField, val, formRef, type, row) => {
console.log('批量打印',val)
// let rows:any = []
// val.forEach(item=>{
// rows = [...rows,...item.selectionRows.map(item1=>item1.number)]
// })
if(val.length == 0){
message.warning("请先选择要打印的数据!")
return
}
// window.open(src.value + '&asn_number=' + val.map(item1=>item1.number).join(','))
await PackageApi.batchPrintingLable(val.map(item1=>item1.number).join(',')).then(res => {
console.log(res)
if (labelType.value == 'cg') {
const src = ref(BASE_URL + '/jmreport/view/922729953438072832?token=' + getAccessToken())
window.open(src.value+'&request_number='+row.number)
window.open(src.value+'&asn_number='+res)
} else {
const src = ref(BASE_URL + '/jmreport/view/922734157577715712?token=' + getAccessToken())
window.open(src.value+'&request_number='+row.number)
}
} else {
message.warning('请先创建标签')
window.open(src.value+'&asn_number='+res)
}
}).catch(err => {
console.log(err)
message.error('创建标签失败')
})
}
/** 初始化 **/

4
src/views/wms/purchasereceiptManage/inspect/inspectRecordMain/index.vue

@ -151,10 +151,10 @@ const buttonTableClick = async (val, row) => {
/** 生成采购上架申请按钮操作 */
const handlePutawayRequest = async (number:string) => {
try{
await message.confirm(t('确认生成上架申请吗?'))
await message.confirm(t('ts.确认生成上架申请吗?'))
tableObject.loading = true
await InspectRecordMainApi.createPutAwayRequest(number)
message.success(t('上架申请生成成功'))
message.success(t('ts.上架申请生成成功'))
await getList()
}catch{}finally{
tableObject.loading = false

12
src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRecordMain/index.vue

@ -177,10 +177,10 @@ const buttonTableClick = async (val, row) => {
/** 生成采购上架申请按钮操作 */
const handleCreatePutawayRequest = async (number:string) => {
try{
await message.confirm(t('确认生成上架申请吗?'))
await message.confirm(t('ts.确认生成上架申请吗?'))
tableObject.loading = true
await PurchasereceiptRecordMainApi.createPutawayRequest(number)
message.success(t('上架申请生成成功'))
message.success(t('ts.上架申请生成成功'))
await getList()
}catch{}finally{
tableObject.loading = false
@ -190,10 +190,10 @@ const handleCreatePutawayRequest = async (number:string) => {
/** 生成到货检验申请按钮操作 */
const handleCreateInspectRequest = async (number:string) => {
try{
await message.confirm(t('确认生成到货检验申请吗?'))
await message.confirm(t('ts.确认生成到货检验申请吗?'))
tableObject.loading = true
await PurchasereceiptRecordMainApi.createInspectRequest(number)
message.success(t('到货检验申请生成成功'))
message.success(t('ts.到货检验申请生成成功'))
await getList()
}catch{}finally{
tableObject.loading = false
@ -227,7 +227,7 @@ const openDetail = (row: any, titleName: any, titleValue: any) => {
// table
const buttondataTable = ref([{
label: '查看其他包装规格',
label: t('ts.查看其他包装规格'),
name: 'viewParentPickingNumber',
hide: false,
type: 'primary',
@ -268,7 +268,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await PurchasereceiptRecordMainApi.exportPurchasereceiptRecordMain(tableObject.params)
download.excel(data, '采购收货记录主.xlsx')
download.excel(data, `${t('ts.采购收货记录主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false

2
src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/index.vue

@ -402,7 +402,7 @@ const submitFormLabel = async (formType, data) => {
console.log("data==",data)
data.subList = detatableData.tableList
console.log("detatableData",detatableData)
await message.confirm('是否为此数据生成标签?')
await message.confirm(t('ts.是否为此数据生成标签?'))
await PurchasereceiptRequestMainApi.genLabel(data) //genLabelId.value
isCreateLabel.value = true
message.success('创建标签成功')

2
src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRecordMain/index.vue

@ -168,7 +168,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await PurchasereturnRecordMainApi.exportPurchasereturnRecordMain(tableObject.params)
download.excel(data, '采购退货记录主.xlsx')
download.excel(data, `${t('ts.采购退货记录主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false

2
src/views/wms/purchasereceiptManage/sparereceipt/sparereceiptRequestMain/index.vue

@ -407,7 +407,7 @@ const { getList:getDetailList } = detatableMethods
//
const submitFormLabel = async (formType, data) => {
try {
await message.confirm('是否为此数据生成标签?')
await message.confirm(t('ts.是否为此数据生成标签?'))
await PurchasereceiptRequestMainApi.genLabel(genLabelId.value)
isCreateLabel.value = true
message.success('创建标签成功')

20
src/views/wms/purchasereceiptManage/supplierdeliver/demandforecastingMain/index.vue

@ -234,11 +234,11 @@ const openForm =async (type: string, row?: number) => {
const handleClose = async (id : number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
tableObject.loading = true
//
await DemandforecastingMainApi.closePurchaseMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
tableObject.loading = false
//
await getList()
@ -251,11 +251,11 @@ const handleClose = async (id : number) => {
const handleOpen = async (id : number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await DemandforecastingMainApi.openPurchaseMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -268,11 +268,11 @@ const handleClose = async (id : number) => {
const handlePublish = async (id : number) => {
try {
//
await message.confirm('是否发布所选中数据?')
await message.confirm(t('ts.是否发布所选中数据?'))
tableObject.loading = true
//
await DemandforecastingMainApi.publishPurchaseMain(id)
message.success(t('发布成功!'))
message.success(t('ts.发布成功!'))
tableObject.loading = false
//
await getList()
@ -285,11 +285,11 @@ const handleClose = async (id : number) => {
const handleWit = async (id : number) => {
try {
//
await message.confirm('是否下架所选中数据?')
await message.confirm(t('ts.是否下架所选中数据?'))
tableObject.loading = true
//
await DemandforecastingMainApi.witPurchaseMain(id)
message.success(t('下架成功!'))
message.success(t('ts.下架成功!'))
tableObject.loading = false
//
await getList()
@ -330,7 +330,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await DemandforecastingMainApi.exportDemandforecastingMain(tableObject.params)
download.excel(data, '要货预测主.xlsx')
download.excel(data, `${t('ts.要货预测主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -383,7 +383,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '要货预测主导入模版.xlsx'
templateTitle: `${t('ts.要货预测主导入模版')}.xlsx`
})
//

24
src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/index.vue

@ -44,7 +44,7 @@
<BasicForm ref="formRef"
@success="getList"
:isOpenSearchTable="true"
fieldTableColumn="lineNumber"
fieldTableColumn="itemCode"
:rules="PurchaseMainRules"
:formAllSchemas="PurchaseMain.allSchemas"
:tableAllSchemas="PurchaseDetail.allSchemas"
@ -141,7 +141,7 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
})
}
if(repeatCode.length>0){
message.warning(`物料代码${repeatCode.join(',')}已经存在`);
message.warning(`${t('ts.物料代码')}${repeatCode.join(',')}${t('ts.已经存在')}`);
}
if(val.length>0){
//frm
@ -367,11 +367,11 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
const handleClose = async (id : number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
tableObject.loading = true
//
await PurchaseMainApi.closePurchaseMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
tableObject.loading = false
//
await getList()
@ -384,11 +384,11 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
const handleOpen = async (id : number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await PurchaseMainApi.openPurchaseMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -401,11 +401,11 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
const handlePublish = async (id : number) => {
try {
//
await message.confirm('是否发布所选中数据?')
await message.confirm(t('ts.是否发布所选中数据?'))
tableObject.loading = true
//
await PurchaseMainApi.publishPurchaseMain(id)
message.success(t('发布成功!'))
message.success(t('ts.发布成功!'))
tableObject.loading = false
//
await getList()
@ -418,11 +418,11 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
const handleWit = async (id : number) => {
try {
//
await message.confirm('是否下架所选中数据?')
await message.confirm(t('ts.是否下架所选中数据?'))
tableObject.loading = true
//
await PurchaseMainApi.witPurchaseMain(id)
message.success(t('下架成功!'))
message.success(t('ts.下架成功!'))
tableObject.loading = false
//
await getList()
@ -440,7 +440,7 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
//
exportLoading.value = true
const data = await PurchaseMainApi.exportPurchaseMain(tableObject.params)
download.excel(data, '采购订单主.xlsx')
download.excel(data, `${t('ts.采购订单主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -493,7 +493,7 @@ console.log('PurchaseMain.allSchemas.searchSchema',PurchaseMain.allSchemas.searc
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '采购订单主导入模版.xlsx'
templateTitle: `${t(`ts.采购订单主导入模版`)}.xlsx`
})
//

12
src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/purchaseMain.data.ts

@ -589,7 +589,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false,
},
{
label: '已计划数量',
label: t('ts.已计划数量'),
field: 'plannedQty',
table: {
width: 150
@ -607,7 +607,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false,
},
{
label: '已发货数量',
label: t('ts.已发货数量'),
field: 'shippedQty',
table: {
width: 150
@ -625,7 +625,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false,
},
{
label: '已收货数量',
label: t('ts.已收货数量'),
field: 'receivedQty',
table: {
width: 150
@ -643,7 +643,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false
},
{
label: '已退货数量',
label: t('ts.已退货数量'),
field: 'returnedQty',
table: {
width: 150
@ -661,7 +661,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false
},
{
label: '已上架数量',
label: t('ts.已上架数量'),
field: 'putawayQty',
table: {
width: 150
@ -679,7 +679,7 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
isForm: false
},
{
label: '单价',
label: t('ts.单价'),
field: 'singlePrice',
table: {
width: 150

44
src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/index.vue

@ -29,7 +29,7 @@
<!-- 表单弹窗添加/修改 -->
<BasicForm ref="formRef" @success="getList"
:isOpenSearchTable="true"
fieldTableColumn="poNumber"
fieldTableColumn="poLine"
:rules="PurchasePlanMainRules"
:formAllSchemas="PurchasePlanMain.allSchemas"
:tableAllSchemas="PurchasePlanDetail.allSchemas"
@ -292,9 +292,9 @@ const getSearchTableData = async (number,formField,searchField)=>{
// defaultButtons.mainListEditBtn({ hide: isShowMainButton(row, ['1']), hasPermi: 'wms:purchase-plan-main:update' }), //
// defaultButtons.mainListDeleteBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchase-plan-main:delete'}), //
{
label: '创建供应商发货申请',
label: t('ts.创建供应商发货申请'),
name: 'supplierdeliver',
hide: isShowMainButton(row, ['1']),
hide: isShowMainButton(row, ['3']),
type: 'primary',
icon: '',
color: '',
@ -376,10 +376,10 @@ const { wsCache } = useCache()
const handleClose = async (id : number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
//
await PurchasePlanMainApi.closePurchasePlanMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
tableObject.loading = false
//
await getList()
@ -392,11 +392,11 @@ const { wsCache } = useCache()
const handleOpen = async (id : number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.openPurchasePlanMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -410,11 +410,11 @@ const { wsCache } = useCache()
const handleReOpen = async (id : number) => {
try {
//
await message.confirm('是否重新打开所选中数据?')
await message.confirm(t('ts.是否重新打开所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.openPurchasePlanMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -427,11 +427,11 @@ const { wsCache } = useCache()
const handlePublish = async (id : number) => {
try {
//
await message.confirm('是否发布所选中数据?')
await message.confirm(t('ts.是否发布所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.publishPurchasePlanMain(id)
message.success(t('发布成功!'))
message.success(t('ts.发布成功!'))
tableObject.loading = false
//
await getList()
@ -444,11 +444,11 @@ const { wsCache } = useCache()
const handleWit = async (id : number) => {
try {
//
await message.confirm('是否下架所选中数据?')
await message.confirm(t('ts.是否下架所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.witPurchasePlanMain(id)
message.success(t('下架成功!'))
message.success(t('ts.下架成功!'))
tableObject.loading = false
//
await getList()
@ -461,11 +461,11 @@ const { wsCache } = useCache()
const handleAcc = async (id : number) => {
try {
//
await message.confirm('是否接受所选中数据?')
await message.confirm(t('ts.是否接受所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.accPurchasePlanMain(id)
message.success(t('接受成功!'))
message.success(t('ts.接受成功!'))
tableObject.loading = false
//
await getList()
@ -478,11 +478,11 @@ const { wsCache } = useCache()
const handleRej = async (id : number) => {
try {
//
await message.confirm('是否驳回所选中数据?')
await message.confirm(t('ts.是否驳回所选中数据?'))
tableObject.loading = true
//
await PurchasePlanMainApi.rejPurchasePlanMain(id)
message.success(t('驳回成功!'))
message.success(t('ts.驳回成功!'))
tableObject.loading = false
//
await getList()
@ -500,7 +500,7 @@ const { wsCache } = useCache()
//
exportLoading.value = true
const data = await PurchasePlanMainApi.exportPurchasePlanMain(tableObject.params)
download.excel(data, '要货计划主.xlsx')
download.excel(data, `${t('ts.要货计划主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -538,7 +538,7 @@ const { wsCache } = useCache()
if(res.list[0].type == 'DISCRETE'){//
if (item.planQty > res.list[0].orderQty - res.list[0].plannedQty) {
flag = true;
message.error('要货计划数量不得大于订单数量-已计划数量')
message.error(t('ts.要货计划数量不得大于订单数量-已计划数量'))
return
}else{
data.subList.push(item) //
@ -556,7 +556,7 @@ const { wsCache } = useCache()
try {
if (formType === 'create') {
if(data.subList.length == 0){
message.error('子列表数量不能空')
message.error(t('ts.子列表数量不能空'))
return
}
await PurchasePlanMainApi.createPurchasePlanMain(data)
@ -584,7 +584,7 @@ const { wsCache } = useCache()
}).then(res => {
if(res.list[0].type == 'DISCRETE'){//
if (data.planQty > res.list[0].orderQty - res.list[0].plannedQty) {
message.error('要货计划数量不得大于订单数量-已计划数量')
message.error(t('ts.要货计划数量不得大于订单数量-已计划数量'))
tag = false
} else {
tag = true
@ -607,7 +607,7 @@ const { wsCache } = useCache()
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '要货计划主导入模版.xlsx'
templateTitle: `${t('ts.要货计划主导入模版')}.xlsx`
})
//

8
src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRecordMain/index.vue

@ -196,10 +196,10 @@ const buttonTableClick = async (val, row) => {
/** 生成采购收货申请按钮操作 */
const handlerCreatePurchasereceiptRequest = async (number:string) => {
try{
await message.confirm(t('确认生成采购申请吗?'))
await message.confirm(t('ts.确认生成采购申请吗?'))
tableObject.loading = true
await SupplierdeliverRecordMainApi.createPurchasereceiptRequest(number)
message.success(t('采购申请生成成功'))
message.success(t('ts.采购申请生成成功'))
await getList()
}catch{}finally{
tableObject.loading = false
@ -241,7 +241,7 @@ const openDetail = async (row: any, titleName: any, titleValue: any) => {
// table
const buttondataTable = ref([{
label: '查看其他包装规格',
label: t('ts.查看其他包装规格'),
name: 'viewParentPickingNumber',
hide: false,
type: 'primary',
@ -273,7 +273,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await SupplierdeliverRecordMainApi.exportSupplierdeliverRecordMain(tableObject.params)
download.excel(data, '供应商发货记录主.xlsx')
download.excel(data, `${t('ts.供应商发货记录主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false

67
src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/index.vue

@ -153,9 +153,11 @@
</BasicForm>
<!-- 标签打印 -->
<SearchTable style="width:905px" ref="searchTableRef" @searchTableSuccess="searchTableSuccess1" />
<SearchTable style="width:905px" ref="searchTableRef" @searchTableSuccess="searchTableSuccess1" >
<!-- <template #actions>
<el-button type="primary" @click="printAllClick">打印全部</el-button>
</template> -->
</SearchTable>
</template>
<script setup lang="ts">
@ -438,7 +440,7 @@ const butttondata = (row,$index) => {
}), //
// defaultButtons.mainListDeleteBtn({ hasPermi: 'wms:supplierdeliver-request-main:delete' }), //
{
label: '生成标签',
label: t('ts.生成标签'),
name: 'ssbq',
hide: isShowMainButtonLabel(row, ['3']),
type: 'primary',
@ -451,7 +453,7 @@ const butttondata = (row,$index) => {
//defaultButtons.mainListDocumentPrintBtn({ hide: isShowMainButton(row, ['3','8']) }), //
//
{
label: '发货',
label: t('ts.发货'),
name: 'genRecords',
hide: isShowMainButton(row, ['3']),
type: 'primary',
@ -496,7 +498,7 @@ const buttonTableClick = async (val, row) => {
} else if (val == 'ssbq') {
await SupplierdeliverRequestMainApi.selfCheckReport(row.masterId).then(async (res) => {
if(!res){
message.warning("请先上传自检报告!")
message.warning(t('ts.请先上传自检报告!'))
return
}else{
//
@ -591,11 +593,11 @@ const handleDelete = async (id: number) => {
const handleClo = async (id: number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
tableObject.loading = true
//
await SupplierdeliverRequestMainApi.cloSupplierdeliverRequestMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
//
await getList()
} catch {}finally{
@ -607,11 +609,11 @@ const handleClo = async (id: number) => {
const handleOpe = async (id: number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await SupplierdeliverRequestMainApi.opeSupplierdeliverRequestMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
//
await getList()
} catch {}finally{
@ -642,7 +644,7 @@ const handleUploadQualityReport = async (row) => {
if(uploadFile){
uploadFile['componentProps']['upData']['tableId'] = row.masterId
}
ploadQualityReportRef.value.open('create', null, {masterId:row.masterId},'上传质检报告','上传质检报告')// createLabel
ploadQualityReportRef.value.open('create', null, {masterId:row.masterId},t('ts.上传质检报告'),t('ts.上传质检报告'))// createLabel
const tableFormKeys = {}
SupplierdeliverInspectionDetail.allSchemas.tableFormColumns.forEach((item) => {
@ -675,11 +677,11 @@ const submitFormUploadQualityReport = async (formType, data) => {
const handleSub = async (id: number) => {
try {
//
await message.confirm('是否提交审批所选中数据?')
await message.confirm(t('ts.是否提交审批所选中数据?'))
tableObject.loading = true
//
await SupplierdeliverRequestMainApi.subSupplierdeliverRequestMain(id)
message.success(t('提交审批成功!'))
message.success(t('ts.提交审批成功!'))
//
await getList()
} catch {}finally{
@ -691,11 +693,11 @@ const handleSub = async (id: number) => {
const handleApp = async (id: number) => {
try {
//
await message.confirm('是否审批通过所选中数据?')
await message.confirm(t('ts.是否审批通过所选中数据?'))
tableObject.loading = true
//
await SupplierdeliverRequestMainApi.appSupplierdeliverRequestMain(id)
message.success(t('审批通过成功!'))
message.success(t('ts.审批通过成功!'))
//
await getList()
} catch {}finally{
@ -707,11 +709,11 @@ const handleApp = async (id: number) => {
const handleTur = async (id: number) => {
try {
//
await message.confirm('是否驳回所选中数据?')
await message.confirm(t('ts.是否驳回所选中数据?'))
tableObject.loading = true
//
await SupplierdeliverRequestMainApi.rejSupplierdeliverRequestMain(id)
message.success(t('驳回成功!'))
message.success(t('ts.驳回成功!'))
//
await getList()
} catch {}finally{
@ -725,11 +727,11 @@ const genRecords = async (id: number) => {
try {
await SupplierdeliverRequestMainApi.selfCheckReport(id).then(async res => {
if(!res){
message.warning("请先上传自检报告!")
message.warning(t('ts.请先上传自检报告!'))
return
}else{
//
await message.confirm('是否处理所选中数据?')
await message.confirm(t('ts.是否处理所选中数据?'))
getLoading = ElLoading.service({
lock: true,
text: 'loading...',
@ -737,7 +739,7 @@ const genRecords = async (id: number) => {
})
//
SupplierdeliverRequestMainApi.genRecordsSupplierdeliverRequestMain(id).then(res => {
message.success(t('处理成功!'))
message.success(t('ts.处理成功!'))
//
getList()
//
@ -763,7 +765,7 @@ const handleExport = async () => {
const data = await SupplierdeliverRequestMainApi.exportSupplierdeliverRequestMain(
tableObject.params
)
download.excel(data, '供应商发货申请主.xlsx')
download.excel(data, `${'ts.供应商发货申请主'}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -786,10 +788,10 @@ const submitFormLabel = async (formType, data) => {
console.log("data==",data)
data.subList = detatableData.tableList
console.log("detatableData",detatableData)
await message.confirm('是否为此数据生成标签?')
await message.confirm(t('ts.是否为此数据生成标签?'))
await SupplierdeliverRequestMainApi.genLabel(data)
isCreateLabel.value = true
message.success('创建标签成功')
message.success(t('ts.创建标签成功'))
getList()
} finally {
formLabelRef.value.formLoading = false
@ -820,7 +822,12 @@ const labelPrint = async (row) => {
tableColumns.forEach((item) => {
item.width = item.table?.width || 150
})
searchTableRef.value.openData("标签信息",tableObjectPrint,{tableColumns},true)
searchTableRef.value.openData(t('ts.标签信息'),tableObjectPrint,{tableColumns},true)
}
//
const printAllClick = ()=>{
}
// --
@ -831,7 +838,7 @@ const searchTableSuccess1 = async (formField, searchField, val, formRef, type, r
// rows = [...rows,...item.selectionRows.map(item1=>item1.number)]
// })
if(val.length == 0){
message.warning("请先选择要打印的数据!")
message.warning(t('ts.请先选择要打印的数据'))
return
}
// window.open(src.value + '&asn_number=' + val.map(item1=>item1.number).join(','))
@ -841,7 +848,7 @@ const searchTableSuccess1 = async (formField, searchField, val, formRef, type, r
window.open(src.value + '&asn_number=' + res)
}).catch(err => {
console.log(err)
message.error('创建标签失败')
message.error(t('ts.创建标签失败'))
})
}
@ -884,7 +891,7 @@ const submitForm = async (formType, data) => {
}
})
if (isHave) {
message.error('生产日期不可以大于过期日期')
message.error(t('ts.生产日期不可以大于过期日期'))
formRef.value.formLoading = false
return
}
@ -893,7 +900,7 @@ const submitForm = async (formType, data) => {
let planArriveStr = formatDate(data.planArriveTime);
if(planArriveStr > planArriveTimeStr.value){
let confirmFlag = false;
await message.confirm("计划到货时间大于要货计划送达日期是否继续?").then(() => {
await message.confirm(t('ts.计划到货时间大于要货计划送达日期是否继续?')).then(() => {
console.log("选择了OK")
//OK
}).catch(() => {
@ -908,7 +915,7 @@ const submitForm = async (formType, data) => {
}
}
if(tableData.value.length <= 0){
message.warning(`子表明细不能为空!`)
message.warning(t('ts.子表明细不能为空!'))
formRef.value.formLoading = false
return;
}
@ -935,7 +942,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '供应商发货申请主导入模版.xlsx'
templateTitle: `${t('ts.供应商发货申请主导入模版')}.xlsx`
})
//

4
src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/supplierdeliverBasicForm.vue

@ -267,7 +267,7 @@ const submitForm = async (formType, data) => {
}
})
if (isHave) {
message.error('生产日期不可以大于过期日期')
message.error(t('ts.生产日期不可以大于过期日期'))
formRef.value.formLoading = false
return
}
@ -276,7 +276,7 @@ const submitForm = async (formType, data) => {
let planArriveStr = formatDate(data.planArriveTime);
if(planArriveStr > planArriveTimeStr.value){
let confirmFlag = false;
await message.confirm("计划到货时间大于要货计划送达日期是否继续?").then(() => {
await message.confirm(t('ts.计划到货时间大于要货计划送达日期是否继续?')).then(() => {
console.log("选择了OK")
//OK
}).catch(() => {

68
src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRequestMain/supplierdeliverRequestMain.data.ts

@ -1638,74 +1638,6 @@ export const SupplierdeliverRequestDetailLabel = useCrudSchemas(reactive<CrudSch
},
]))
export const UploadQualityReport = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '上传质检报告',
field: 'uploadFile',
sort: 'custom',
isTable:false,
isTableForm:false,
form: {
component: 'UploadFile',
componentProps: {
upData:{
tableId: '',
tableName: 'UploadQualityReport',
fileType:['apk'],
fileSize:100
},
limit:1,
}
},
},
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
isForm:false,
isTableForm:true,
table: {
width: 150,
},
},
{
label: '计量单位',
field: 'uom',
dictType: DICT_TYPE.UOM,
dictClass: 'string',
isTable: true,
isForm:false,
sort: 'custom',
table: {
width: 150
},
tableForm: {
type: 'Select'
}
},
{
label: '供应商批次',
field: 'batch',
sort: 'custom',
isForm:false,
table: {
width: 150
},
},
{
label: '发货数量',
field: 'planQty',
table: {
width: 150
},
isForm:false,
tableForm: {
type: 'InputNumber',
min: 0,
precision: 6
}
},
]))
export const SupplierdeliverRequestPackage = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '包装号',

252
src/views/wms/supplierManage/invoicingcalendar/index.vue

@ -0,0 +1,252 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<Search :schema="Invoicingcalendar.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="Invoicingcalendar.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<Table
:columns="tableColumns"
:data="tableObject.tableList"
:loading="tableObject.loading"
:pagination="{
total: tableObject.total
}"
v-model:pageSize="tableObject.pageSize"
v-model:currentPage="tableObject.currentPage"
v-model:sort="tableObject.sort"
>
<template #code="{row}">
<el-button type="primary" link @click="openDetail(row, '代码', row.code)">
<span>{{ row.code }}</span>
</el-button>
</template>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<BasicForm
ref="basicFormRef"
@success="formsSuccess"
:rules="InvoicingcalendarRules"
:formAllSchemas="Invoicingcalendar.allSchemas"
:apiUpdate="InvoicingcalendarApi.updateInvoicingcalendar"
:apiCreate="InvoicingcalendarApi.createInvoicingcalendar"
@searchTableSuccess="searchTableSuccess"
:isBusiness="false"
/>
<!-- 详情 -->
<Detail ref="detailRef" :isBasic="true" :allSchemas="Invoicingcalendar.allSchemas" />
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/invoicingcalendar/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import download from '@/utils/download'
import { Invoicingcalendar,InvoicingcalendarRules } from './invoicingcalendar.data'
import * as InvoicingcalendarApi from '@/api/wms/invoicingcalendar'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from '@/components/Detail/src/Detail.vue'
defineOptions({ name: 'Invoicingcalendar' })
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(Invoicingcalendar.allSchemas.tableColumns)
//
const searchTableSuccess = (formField, searchField, val, formRef) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
formRef.setValues(setV)
})
}
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
const { tableObject, tableMethods } = useTable({
getListApi: InvoicingcalendarApi.getInvoicingcalendarPage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:invoicingcalendar:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:invoicingcalendar:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:invoicingcalendar:export'}), //
defaultButtons.defaultFreshBtn(null), //
defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
// {
// label: '',
// name: 'zdy',
// hide: false,
// type: 'primary',
// icon: 'Select',
// color: ''
// },
]
//
const buttonBaseClick = (val, item) => {
if (val == 'add') { //
openForm('create')
} else if (val == 'import') { //
handleImport()
} else if (val == 'export') { //
handleExport()
} else if (val == 'refresh') { //
getList()
} else if (val == 'filtrate') { //
} else { //
console.log('其他按钮', item)
}
}
// -
const butttondata = [
defaultButtons.mainListEditBtn({hasPermi:'wms:invoicingcalendar:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:invoicingcalendar:delete'}), //
]
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const basicFormRef = ref()
const openForm = (type: string, row?: any) => {
basicFormRef.value.open(type, row)
}
// form
const formsSuccess = async (formType,data) => {
var isHave =Invoicingcalendar.allSchemas.formSchema.some(function (item) {
return item.field === 'activeTime' || item.field === 'expireTime';
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
return;
}
}
if(data.activeTime==0)data.activeTime = null;
if(data.expireTime==0)data.expireTime = null;
if (formType === 'create') {
if(data.beginDay > data.endDay){
message.error('开始日期要小于截止日期')
return;
}
await InvoicingcalendarApi.createInvoicingcalendar(data)
message.success(t('common.createSuccess'))
} else {
if(data.beginDay > data.endDay){
message.error('开始日期要小于截止日期')
return;
}
await InvoicingcalendarApi.updateInvoicingcalendar(data)
message.success(t('common.updateSuccess'))
}
basicFormRef.value.dialogVisible = false
getList()
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue, 'basicInvoicingcalendar')
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await InvoicingcalendarApi.deleteInvoicingcalendar(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await InvoicingcalendarApi.exportInvoicingcalendar(tableObject.params)
download.excel(data, '开票日历.xlsx')
} catch {
} finally {
exportLoading.value = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '开票日历导入模版.xlsx'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(async () => {
getList()
importTemplateData.templateUrl = await InvoicingcalendarApi.importTemplate()
})
</script>

110
src/views/wms/supplierManage/invoicingcalendar/invoicingcalendar.data.ts

@ -0,0 +1,110 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
import { fa } from 'element-plus/es/locale'
// 表单校验
export const InvoicingcalendarRules = reactive({
beginDay: [required],
endDay: [required],
concurrencyStamp: [required],
})
export const Invoicingcalendar = useCrudSchemas(reactive<CrudSchema[]>([
{
label: 'id',
field: 'id',
sort: 'custom',
isForm: false,
isTable: false
},
{
label: '开始日期',
field: 'beginDay',
sort: 'custom',
dictType: DICT_TYPE.SYSTEM_DAY,
dictClass: 'string',
},
{
label: '结束日期',
field: 'endDay',
sort: 'custom',
dictType: DICT_TYPE.SYSTEM_DAY,
dictClass: 'string',
},
{
label: '描述',
field: 'descriiption',
sort: 'custom',
},
{
label: '是否可用',
field: 'available',
sort: 'custom',
isSearch: true,
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string',
form: {
component: 'Switch',
value: 'TRUE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'
}
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
},
{
label: '创建时间',
field: 'createTime',
sort: 'custom',
formatter: dateFormatter,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
isForm: false,
isTable: false,
},
{
label: '扩展属性',
field: 'extraProperties',
sort: 'custom',
isTable: false,
isForm:false,
},
{
label: '并发乐观锁',
field: 'concurrencyStamp',
sort: 'custom',
isTable: false,
isForm:false,
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '地点ID',
field: 'siteId',
sort: 'custom',
isTable: false,
isForm:false,
},
{
label: '操作',
field: 'action',
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

24
src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue

@ -305,11 +305,11 @@
const handleClo = async (id : number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.cloPurchaseclaimRequestMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
tableObject.loading = false
//
await getList()
@ -322,11 +322,11 @@
const handleOpe = async (id : number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.opePurchaseclaimRequestMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -339,11 +339,11 @@
const handleSub = async (id : number) => {
try {
//
await message.confirm('是否提交审批所选中数据?')
await message.confirm(t('ts.是否提交审批所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.subPurchaseclaimRequestMain(id)
message.success(t('提交审批成功!'))
message.success(t('ts.提交审批成功!'))
tableObject.loading = false
//
await getList()
@ -356,11 +356,11 @@
const handleApp = async (id : number) => {
try {
//
await message.confirm('是否审批通过所选中数据?')
await message.confirm(t('ts.是否审批通过所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.appPurchaseclaimRequestMain(id)
message.success(t('审批通过成功!'))
message.success(t('ts.审批通过成功!'))
tableObject.loading = false
//
await getList()
@ -373,11 +373,11 @@
const handleTur = async (id : number) => {
try {
//
await message.confirm('是否驳回所选中数据?')
await message.confirm(t('ts.是否驳回所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.rejPurchaseclaimRequestMain(id)
message.success(t('驳回成功!'))
message.success(t('ts.驳回成功!'))
tableObject.loading = false
//
await getList()
@ -390,11 +390,11 @@
const genRecords = async (id : number) => {
try {
//
await message.confirm('是否处理所选中数据?')
await message.confirm(t('ts.是否处理所选中数据?'))
tableObject.loading = true
//
await PurchaseclaimRequestMainApi.genRecordsPurchaseclaimRequestMain(id)
message.success(t('处理成功!'))
message.success(t('ts.处理成功!'))
tableObject.loading = false
//
await getList()

12
src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue

@ -29,7 +29,7 @@
v-model:sort="tableObject.sort"
>
<template #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<el-button type="primary" link @click="openDetail(row, t('ts.单据号'), row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
@ -54,26 +54,26 @@
<Detail
ref="detailRef"
:annexTable="[{
label: '合同附件',
label: t('ts.合同附件'),
prop: 'Annex',
tableName:'contract',
showDownload:true,
hiddenDelete:true,
},{
label: '发票附件',
label: t('ts.发票附件'),
prop: 'Annex',
tableName:'invoice',
showDownload:true,
hiddenDelete:true,
},{
label: '货运单附件',
label: t('ts.货运单附件'),
prop: 'Annex',
tableName:'waybill',
showDownload:true,
hiddenDelete:true,
}]"
:annexAlias="{
label:'其他附件',
label:t('ts.其他附件'),
showDownload:true,
hiddenDelete:true
}"
@ -179,7 +179,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await SupplierinvoiceRecordMainApi.exportSupplierinvoiceRecordMain(tableObject.params)
download.excel(data, '供应商发票记录主.xlsx')
download.excel(data, `${t('ts.供应商发票记录主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false

83
src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue

@ -75,23 +75,23 @@
<Detail
ref="detailRef"
:annexTable="[{
label: '合同附件',
label: t('ts.合同附件'),
prop: 'Annex',
tableName:'contract'
},{
label: '发票附件',
label: t('ts.发票附件'),
prop: 'Annex',
tableName:'invoice'
},{
label: '货运单附件',
label: t('ts.货运单附件'),
prop: 'Annex',
tableName:'waybill'
}]"
:annexAlias="{
label:'其他附件'
label:t('ts.其他附件')
}"
:otherHeadButttonData="[{
label: '打印明细',
label: t('ts.打印明细'),
name: 'printing',
hide: false,
type: 'primary',
@ -100,7 +100,7 @@
float:'left',
hasPermi: ''
},{
label: '打印全部发货单',
label: t('ts.打印全部发货单'),
name: 'printing-all',
hide: false,
type: 'primary',
@ -109,7 +109,7 @@
float:'left',
hasPermi: ''
},{
label: '导出明细',
label: t('ts.导出明细'),
name: 'export-detail',
hide: false,
type: 'primary',
@ -119,7 +119,7 @@
hasPermi: ''
}]"
:buttondataTable = "[{
label: '打印',
label: t('ts.打印'),
name: 'print',
hide: false,
type: 'primary',
@ -192,7 +192,7 @@
const searchTableParams = ref([
{
formField: 'supplierCode',
searchTableTitle: '供应商信息',
searchTableTitle: t('ts.供应商信息'),
searchTableAllSchemas: Supplier.allSchemas,
searchTablePage: SupplierApi.getSupplierPage
}
@ -298,7 +298,7 @@
defaultButtons.mainListPurchasePlanOpeBtn({ hide: isShowMainButton(row, ['1','6']) ,hasPermi: 'wms:supplierinvoice-request-main:open'}), //
defaultButtons.mainListPlanSubBtn({ hide: isShowMainButton(row, ['1','6']),hasPermi: 'wms:supplierinvoice-request-main:sub' }), //
{
label: '采购通过',
label: t('ts.采购通过'),
name: 'purchase_mainPlanSub',
hide: isShowMainButton(row, ['2','7']),
type: 'primary',
@ -307,7 +307,7 @@
hasPermi: 'wms:supplierinvoice-request-main:app',
link: true, //
},{
label: '采购驳回',
label: t('ts.采购驳回'),
name: 'purchase_mainPlanTur',
hide: isShowMainButton(row, ['2','7']),
type: 'danger',
@ -316,7 +316,7 @@
hasPermi: 'wms:supplierinvoice-request-main:rej'
},
{
label: '供应商确认',
label: t('ts.供应商确认'),
name: 'invoice_sent_out',
hide: isShowMainButton(row, ['8']),
type: 'danger',
@ -325,7 +325,7 @@
hasPermi: 'wms:supplierinvoice-request-main:invoiceSentOut'
},
{
label: '财务通过',
label: t('ts.财务通过'),
name: 'finance_mainPlanSub',
hide: isShowMainButton(row, ['4']),
type: 'primary',
@ -334,7 +334,7 @@
hasPermi: 'wms:supplierinvoice-request-main:financeApp',
link: true, //
},{
label: '财务驳回',
label: t('ts.财务驳回'),
name: 'finance_mainPlanTur',
hide: isShowMainButton(row, ['4']),
type: 'danger',
@ -346,7 +346,7 @@
defaultButtons.mainListPurchasePlanCloBtn({ hasPermi: 'wms:supplierinvoice-request-main:close' ,hide: isShowMainButton(row, ['1','8','6']) }), //
// defaultButtons.mainListDeleteBtn({hasPermi:'wms:supplierinvoice-request-main:delete'}), //
{
label: '打印',
label: t('ts.打印'),
name: 'mian_print',
hide: null,
type: 'primary',
@ -395,8 +395,15 @@ const handleImport = () => {
/** 添加/修改操作 */
const formRef = ref()
const openForm = async (type : string, row ?: number) => {
//
SupplierinvoiceRequestMainApi.checkInvoicingCalendar({}).then(res => {
if(res.flag){
message.alertWarning(res.msg)
return
}
tableData.value = [] //
formRef.value.open(type, row)
})
}
//
@ -432,11 +439,11 @@ const handleImport = () => {
const handleClo = async (id : number) => {
try {
//
await message.confirm('是否关闭所选中数据?')
await message.confirm(t('ts.是否关闭所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.cloSupplierinvoiceRequestMain(id)
message.success(t('关闭成功!'))
message.success(t('ts.关闭成功!'))
tableObject.loading = false
//
await getList()
@ -449,11 +456,11 @@ const handleImport = () => {
const handleOpe = async (id : number) => {
try {
//
await message.confirm('是否打开所选中数据?')
await message.confirm(t('ts.是否打开所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.opeSupplierinvoiceRequestMain(id)
message.success(t('打开成功!'))
message.success(t('ts.打开成功!'))
tableObject.loading = false
//
await getList()
@ -466,11 +473,11 @@ const handleImport = () => {
const handleSub = async (id : number) => {
try {
//
await message.confirm('是否提交审批所选中数据?')
await message.confirm(t('ts.是否提交审批所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.subSupplierinvoiceRequestMain(id)
message.success(t('提交审批成功!'))
message.success(t('ts.提交审批成功!'))
tableObject.loading = false
//
await getList()
@ -483,11 +490,11 @@ const handleImport = () => {
const handleApp = async (id : number) => {
try {
//
await message.confirm('是否审批通过所选中数据?')
await message.confirm(t('ts.是否审批通过所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.appSupplierinvoiceRequestMain(id)
message.success(t('审批通过成功!'))
message.success(t('ts.审批通过成功!'))
tableObject.loading = false
//
await getList()
@ -501,11 +508,11 @@ const handleImport = () => {
const handleFinanceApp = async (id : number) => {
try {
//
await message.confirm('是否审批通过所选中数据?')
await message.confirm(t('ts.是否审批通过所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.financeappSupplierinvoiceRequestMain(id)
message.success(t('审批通过成功!'))
message.success(t('ts.审批通过成功!'))
tableObject.loading = false
//
await getList()
@ -518,11 +525,11 @@ const handleImport = () => {
const handleTur = async (id : number) => {
try {
//
await message.confirm('是否驳回所选中数据?')
await message.confirm(t('ts.是否驳回所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.rejSupplierinvoiceRequestMain(id)
message.success(t('驳回成功!'))
message.success(t('ts.驳回成功!'))
tableObject.loading = false
//
await getList()
@ -535,11 +542,11 @@ const handleImport = () => {
const handleInvoiceSentOut = async (id : number) => {
try {
//
await message.confirm('是否确认发票寄出选中数据?')
await message.confirm(t('ts.是否确认发票寄出选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.invoiceSentOutSupplierinvoiceRequestMain(id)
message.success(t('发票寄出成功!'))
message.success(t('ts.发票寄出成功!'))
tableObject.loading = false
//
await getList()
@ -552,11 +559,11 @@ const handleImport = () => {
const handleFinaceTur = async (id : number) => {
try {
//
await message.confirm('是否驳回所选中数据?')
await message.confirm(t('ts.是否驳回所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.financerejSupplierinvoiceRequestMain(id)
message.success(t('驳回成功!'))
message.success(t('ts.驳回成功!'))
tableObject.loading = false
//
await getList()
@ -569,11 +576,11 @@ const handleImport = () => {
const genRecords = async (id : number) => {
try {
//
await message.confirm('是否处理所选中数据?')
await message.confirm(t('ts.是否处理所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceRequestMainApi.genRecordsSupplierinvoiceRequestMain(id)
message.success(t('处理成功!'))
message.success(t('ts.处理成功!'))
tableObject.loading = false
//
await getList()
@ -591,7 +598,7 @@ const handleImport = () => {
//
exportLoading.value = true
const data = await SupplierinvoiceRequestMainApi.exportSupplierinvoiceRequestMain(tableObject.params)
download.excel(data, '供应商发票申请主.xlsx')
download.excel(data, `${t('ts.供应商发票申请主')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -627,11 +634,11 @@ const handleImport = () => {
try {
if (formType === 'create') {
if(data.subList.length == 0){
message.warning("请添明细数据")
message.warning(t('ts.请添明细数据'))
return;
}
if(data.subList.length > 999){
message.warning("明细数据条数已超过最大数量限制【999条】")
message.warning(t('ts.明细数据条数已超过最大数量限制【999条】'))
return;
}
await SupplierinvoiceRequestMainApi.createSupplierinvoiceRequestMain(data)
@ -651,7 +658,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '供应商发货申请主导入模版.xlsx'
templateTitle: `${t('ts.供应商发货申请主导入模版')}.xlsx`
})
//
@ -707,7 +714,7 @@ const importSuccess = () => {
masterId: masterId
}
const data = await SupplierinvoiceRequestMainApi.exportSupplierinvoiceRequestDetail(params)
download.excel(data, '供应商发票申请明细.xlsx')
download.excel(data, `${t('ts.供应商发票申请明细')}.xlsx`)
} catch {
} finally {
exportLoadingDetail.value = false

20
src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue

@ -28,7 +28,7 @@
v-model:sort="tableObject.sort"
>
<template #code="{row}">
<el-button type="primary" link @click="openDetail(row, '代码', row.code)">
<el-button type="primary" link @click="openDetail(row, t('ts.代码'), row.code)">
<span>{{ row.code }}</span>
</el-button>
</template>
@ -146,7 +146,7 @@ const butttondata = (row) =>{
// defaultButtons.mainListDeleteBtn({hasPermi:'wms:supplierinvoice-invoiced:delete'}), //
// defaultButtons.mainListEditBtn({hasPermi:'wms:supplierinvoice-invoiced:update'}),
{
label: '审核通过',
label: t('ts.审核通过'),
name: 'agree',
hide: isShowMainButton(row, ['1']),
type: 'primary',
@ -155,7 +155,7 @@ const butttondata = (row) =>{
hasPermi: 'wms:supplierinvoice-invoiced:agree'
},
{
label: '作废',
label: t('ts.作废'),
name: 'refuse',
hide: isShowMainButton(row, ['1']),
type: 'danger',
@ -192,7 +192,7 @@ const formsSuccess = async (formType,data) => {
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
message.error(t('ts.失效时间要大于生效时间'))
return;
}
}
@ -232,11 +232,11 @@ const handleDelete = async (id: number) => {
const handleAgree = async (id : number) => {
try {
//
await message.confirm('是否审批通过所选中数据?')
await message.confirm(t('ts.是否审批通过所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceInvoicedApi.agreeSupplierinvoiceInvoiced(id)
message.success(t('审批通过成功!'))
message.success(t('ts.审批通过成功!'))
tableObject.loading = false
//
await getList()
@ -250,11 +250,11 @@ const handleAgree = async (id : number) => {
const handleRefuse = async (id : number) => {
try {
//
await message.confirm('是否审批拒绝所选中数据?')
await message.confirm(t('ts.是否审批拒绝所选中数据?'))
tableObject.loading = true
//
await SupplierinvoiceInvoicedApi.refuseSupplierinvoiceInvoiced(id)
message.success(t('审批成功!'))
message.success(t('ts.审批成功!'))
tableObject.loading = false
//
await getList()
@ -272,7 +272,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await SupplierinvoiceInvoicedApi.exportSupplierinvoiceInvoiced(tableObject.params)
download.excel(data, '待开票.xlsx')
download.excel(data, `${t('ts.待开票')}.xlsx`)
} catch {
} finally {
exportLoading.value = false
@ -287,7 +287,7 @@ const handleImport = () => {
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '待开票导入模版.xlsx'
templateTitle: `${t('ts.待开票导入模版')}.xlsx`
})
//
const importSuccess = () => {

Loading…
Cancel
Save