Browse Source

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

master_hella_20240701
yufei0306 7 months ago
parent
commit
b2a559d816
  1. 2
      README.md
  2. 2
      src/views/mes/abilityInfo/abilityInfo.data.ts
  3. 179
      src/views/mes/holidayCalendar/holidayCalendar.data.ts
  4. 75
      src/views/mes/holidayCalendar/index.vue
  5. 2
      src/views/mes/hrPersonAbility/hrPersonAbility.data.ts
  6. 8
      src/views/mes/jobcalendar/index.vue
  7. 2
      src/views/mes/patternType/patternType.data.ts
  8. 6
      src/views/mes/processroute/processroute.data.ts
  9. 2
      src/views/mes/workScheduling/components/reportAll.vue
  10. 6
      src/views/mes/workcalendar/index.vue
  11. 1
      src/views/wms/basicDataManage/itemManage/relegateRequest/relegateRequest.data.ts
  12. 75
      src/views/wms/issueManage/productionreturn/productionreturnRequestMain/index.vue
  13. 54
      src/views/wms/issueManage/productionreturn/productionreturnRequestMain/productionreturnRequestMain.data.ts
  14. 12
      src/views/wms/moveManage/inventorymove/inventorymoveRequestMain/index.vue

2
README.md

@ -1,4 +1,4 @@
## dev发布2024-05-15-003 ## dev发布2024-05-15-004
**xxxx.data.ts 文件配置说明** **xxxx.data.ts 文件配置说明**
**form表单查询弹窗配置** **form表单查询弹窗配置**
form: { form: {

2
src/views/mes/abilityInfo/abilityInfo.data.ts

@ -140,7 +140,7 @@ export const AbilityInfo = useCrudSchemas(reactive<CrudSchema[]>([
field: 'remark', field: 'remark',
sort: 'custom', sort: 'custom',
isSearch: false, isSearch: false,
isTable: false isTable: true
}, },
{ {
label: '状态', label: '状态',

179
src/views/mes/holidayCalendar/holidayCalendar.data.ts

@ -1,179 +0,0 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
// 表单校验
export const HolidayCalendarRules = reactive({
endTime: [required],
concurrencyStamp: [required],
})
export const HolidayCalendar = useCrudSchemas(reactive<CrudSchema[]>([
{
label: 'ID',
field: 'id',
sort: 'custom',
isForm: false,
},
{
label: '日期',
field: 'holidayDate',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '结束时间',
field: 'endTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '备用字段一',
field: 'textOne',
sort: 'custom',
isSearch: true,
},
{
label: '备用字段二',
field: 'textTwo',
sort: 'custom',
isSearch: true,
},
{
label: '备用字段三',
field: 'textThree',
sort: 'custom',
isSearch: true,
},
{
label: '备用字段四',
field: 'textFour',
sort: 'custom',
isSearch: true,
},
{
label: '备用字段五',
field: 'textFive',
sort: 'custom',
isSearch: true,
},
{
label: '删除时间',
field: 'deleteTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '状态',
field: 'status',
sort: 'custom',
isSearch: true,
form: {
component: 'Radio'
},
},
{
label: '并发乐观锁',
field: 'concurrencyStamp',
sort: 'custom',
isSearch: true,
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
isSearch: true,
},
{
label: '创建时间',
field: 'createTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
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,
},
{
label: '删除用户名',
field: 'deleter',
sort: 'custom',
isSearch: true,
},
{
label: '位置ID',
field: 'siteId',
sort: 'custom',
isSearch: true,
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '操作',
field: 'action',
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

75
src/views/mes/holidayCalendar/index.vue

@ -1,75 +0,0 @@
<template>
<div>
<el-calendar>
<template #date-cell="{ data }">
<div
style="height: 100"
:class="data.isSelected ? 'is-selected' : ''"
@click="handleClick(data.day)"
>
<div>{{ data.day.split('-').slice(1).join('-') }}</div>
<div v-if="arr.find((v) => v.date === data.day)">{{ arr.find((v) => v.date === data.day).content }}
</div>
<!-- <div>{{ data.isSelected ? '打羽毛球' : '' }}</div>  -->
</div>
</template>
</el-calendar>
<!-- 自定义弹出框 -->
<el-dialog v-model="dialogFormVisible" title="日程安排" width="600" draggable="true">
<el-form :model="calendar" :label-width="100">
<el-form-item label="日程内容">
<el-input v-model="calendar.content" autocomplete="off" />
</el-form-item>
<el-form-item label="创建时间">
<el-input v-model="calendar.content" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="save"> 确定 </el-button>
<el-button @click="dialogFormVisible = false"> 取消 </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { reactive, ref } from 'vue'
import { HolidayCalendar, HolidayCalendarRules } from './holidayCalendar.data'
import * as HolidayCalendarApi from '@/api/mes/holidayCalendar'
const dialogTableVisible = ref(false)
const dialogFormVisible = ref(false)
const formLabelWidth = '160px'
export default {
name: 'Calendar',
data() {
return {
value: new Date(),
arr: [
{ date: '2024-04-01', content: '打球' },
{ date: '2024-04-02', content: '打台球' },
{ date: '2024-04-03', content: '打篮球' },
{ date: '2024-04-04', content: '踢足球' }
],
dialogFormVisible:false,
calendar: {}
}
},
methods: {
handleClick(date) {
this.dialogFormVisible = true
this.calendar.date=date
},
save(){
}
}
}
</script>
<style scoped>
</style>

2
src/views/mes/hrPersonAbility/hrPersonAbility.data.ts

@ -178,7 +178,7 @@ export const HrPersonAbility = useCrudSchemas(reactive<CrudSchema[]>([
field: 'remark', field: 'remark',
sort: 'custom', sort: 'custom',
isSearch: false, isSearch: false,
isTable: false isTable: true
}, },
{ {
label: '状态', label: '状态',

8
src/views/mes/jobcalendar/index.vue

@ -1,8 +0,0 @@
<template>
<el-calendar v-model="value" />
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const value = ref(new Date())
</script>

2
src/views/mes/patternType/patternType.data.ts

@ -140,6 +140,6 @@ export const PatternType = useCrudSchemas(reactive<CrudSchema[]>([
field: 'remark', field: 'remark',
sort: 'custom', sort: 'custom',
isSearch: false, isSearch: false,
isTable: false isTable: true
} }
])) ]))

6
src/views/mes/processroute/processroute.data.ts

@ -4,6 +4,11 @@ import * as ItembasicApi from '@/api/wms/itembasic'
import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data'
// 表单校验 // 表单校验
export const ProcessrouteRules = reactive({ export const ProcessrouteRules = reactive({
processrouteCode: [required],
processName: [required],
productCode: [required],
ablityCode: [required],
ablityCode: [required],
}) })
export const Processroute = useCrudSchemas(reactive<CrudSchema[]>([ export const Processroute = useCrudSchemas(reactive<CrudSchema[]>([
@ -26,6 +31,7 @@ export const Processroute = useCrudSchemas(reactive<CrudSchema[]>([
field: 'id', field: 'id',
sort: 'custom', sort: 'custom',
isForm: false, isForm: false,
isTable: false,
}, },
{ {

2
src/views/mes/workScheduling/components/reportAll.vue

@ -9,7 +9,7 @@
<template #title>{{ dialogTitle }} </template> <template #title>{{ dialogTitle }} </template>
<el-button type="primary" @click="addRow" style="float:right;;">添加</el-button> <el-button type="primary" @click="addRow" style="float:right;;">添加</el-button>
<el-table :data="tableData" style="border: 1px;stripe; width:1300px ;" > <el-table :data="tableData" style="border: 1px;stripe; width:1300px ;" >
<el-table-column prop="processName" label="工序名称" width="200px"> <el-table-column prop="processCodeSelected" label="工序名称" width="200px" >
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.processCodeSelected" @change="processChange" value-key="processCode"> <el-select v-model="scope.row.processCodeSelected" @change="processChange" value-key="processCode">
<el-option v-for="item in processOption" :key="item.processCode" :label="item.processName" :value="item.processCode" /> <el-option v-for="item in processOption" :key="item.processCode" :label="item.processName" :value="item.processCode" />

6
src/views/mes/workcalendar/index.vue

@ -238,7 +238,7 @@
</el-table> </el-table>
</el-form> </el-form>
<div class="demo-drawer__footer"> <div class="demo-drawer__footer">
<el-button @click="handleBatchClose"> </el-button> <el-button @click="handleAddClose"> </el-button>
<el-button type="primary" @click="addWork"> 保存 </el-button> <el-button type="primary" @click="addWork"> 保存 </el-button>
</div> </div>
</div> </div>
@ -661,6 +661,10 @@ const batchAddWork = () => {
const handleBatchClose = () => { const handleBatchClose = () => {
batchAddDrawer.value = false batchAddDrawer.value = false
} }
const handleAddClose = () => {
drawer.value = false
}
const savePlan = async (workList) => { const savePlan = async (workList) => {
await workCalendarApi.createBatch(workList) await workCalendarApi.createBatch(workList)
//await workCalendarApi.createObj(workList); //await workCalendarApi.createObj(workList);

1
src/views/wms/basicDataManage/itemManage/relegateRequest/relegateRequest.data.ts

@ -20,6 +20,7 @@ export const RelegateRequest = useCrudSchemas(reactive<CrudSchema[]>([
field: 'number', field: 'number',
sort: 'custom', sort: 'custom',
isSearch: true, isSearch: true,
isForm:false,
}, },
{ {
label: '物料代码', label: '物料代码',

75
src/views/wms/issueManage/productionreturn/productionreturnRequestMain/index.vue

@ -70,6 +70,7 @@
:apiDelete="ProductionreturnRequestDetailApi.deleteProductionreturnRequestDetail" :apiDelete="ProductionreturnRequestDetailApi.deleteProductionreturnRequestDetail"
@searchTableSuccessDetail="searchTableSuccessDetail" @searchTableSuccessDetail="searchTableSuccessDetail"
@detailOpenForm="detailOpenForm" @detailOpenForm="detailOpenForm"
:detailValidate="detailValidate"
/> />
<!-- 创建标签 --> <!-- 创建标签 -->
@ -90,13 +91,14 @@
<!-- 导入 --> <!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/productionreturn-request-main/import" :importTemplateData="importTemplateData" <ImportForm ref="importFormRef" url="/wms/productionreturn-request-main/import" :importTemplateData="importTemplateData"
@success="importSuccess" :updateIsDisable="true" :coverIsDisable="true" :mode="2" /> @success="importSuccess" :updateIsDisable="true" :coverIsDisable="true" :mode="2" />
<!-- 标签打印 -->
<SearchTable style="width:905px" ref="searchTableRef" @searchTableSuccess="searchTableSuccess1" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import download from '@/utils/download' import download from '@/utils/download'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
import { ProductionreturnRequestMain,ProductionreturnRequestMainRules,ProductionreturnRequestDetail,ProductionreturnRequestDetailRules,ProductionreturnRequestDetailLabel,ProductionreturnRequestDetailLabelRules } from './productionreturnRequestMain.data' import { ProductionreturnRequestMain,ProductionreturnRequestMainRules,ProductionreturnRequestDetail,ProductionreturnRequestDetailRules,ProductionreturnRequestDetailLabel,ProductionreturnRequestDetailLabelRules, SupplierdeliverRequestPackage } from './productionreturnRequestMain.data'
import * as ProductionreturnRequestMainApi from '@/api/wms/productionreturnRequestMain' import * as ProductionreturnRequestMainApi from '@/api/wms/productionreturnRequestMain'
import * as ProductionreturnRequestDetailApi from '@/api/wms/productionreturnRequestDetail' import * as ProductionreturnRequestDetailApi from '@/api/wms/productionreturnRequestDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons' import * as defaultButtons from '@/utils/disposition/defaultButtons'
@ -130,6 +132,19 @@ const updataTableColumns = (val) => {
tableColumns.value = val tableColumns.value = val
} }
// /
const detailValidate = (data) => {
let tag = false;
if(data.qty <= 0){
message.warning('数量必须大于0')
tag = false;
return tag;
}else {
tag = true;
return tag;
}
}
// //
const isItemType = async (itemCode, labelTypeParams) => { const isItemType = async (itemCode, labelTypeParams) => {
let isType = false let isType = false
@ -509,6 +524,34 @@ const openForm =async (type: string, row?: number) => {
formRef.value.open(type, row) formRef.value.open(type, row)
} }
// --退
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+'&asn_number='+res)
} else {
const src = ref(BASE_URL + '/jmreport/view/922729953438072832?token=' + getAccessToken())
window.open(src.value+'&asn_number='+res)
}
}).catch(err => {
console.log(err)
message.error('创建标签失败')
})
}
// //
const { wsCache } = useCache() const { wsCache } = useCache()
/** 详情操作 */ /** 详情操作 */
@ -657,18 +700,32 @@ const handlePoint = async (row) => {
}) })
// //
if (isCreateLabel.value) { if (isCreateLabel.value) {
if (labelType.value == 'cg') { labelPrint(row)
const src = ref(BASE_URL + '/jmreport/view/922729953438072832?token=' + getAccessToken())
window.open(src.value+'&request_number='+row.number)
} else {
const src = ref(BASE_URL + '/jmreport/view/922734157577715712?token=' + getAccessToken())
window.open(src.value+'&request_number='+row.number)
}
} else { } else {
message.warning('请先创建标签') 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 importFormRef = ref() const importFormRef = ref()
const handleImport = () => { const handleImport = () => {

54
src/views/wms/issueManage/productionreturn/productionreturnRequestMain/productionreturnRequestMain.data.ts

@ -1338,3 +1338,57 @@ export const ProductionreturnRequestDetailLabelRules = reactive({
] ]
}) })
export const SupplierdeliverRequestPackage = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '包装号',
field: 'number',
sort: 'custom',
isSearch: true,
table: {
width: 180,
fixed: 'left'
},
},
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
isSearch: true,
table: {
width: 150,
},
},
{
label: '批次',
field: 'batch',
sort: 'custom',
isSearch: true,
table: {
width: 150,
},
},
{
label: '数量',
field: 'qty',
sort: 'custom',
table: {
width: 150,
},
},
{
label: '计量单位',
field: 'uom',
sort: 'custom',
dictType: DICT_TYPE.UOM,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
form: {
component: 'SelectV2'
},
table: {
width: 150,
},
},
]))

12
src/views/wms/moveManage/inventorymove/inventorymoveRequestMain/index.vue

@ -117,7 +117,7 @@ const { tableObject, tableMethods } = useTable({
} }
fromInventoryStatus.value = 'OK' fromInventoryStatus.value = 'OK'
toInventoryStatus.value = "HOLD" toInventoryStatus.value = "HOLD"
businessType.value = 'OkToHoldRequest' businessType.value = 'OkToHold'
importFileName.value = '合格转隔离申请' importFileName.value = '合格转隔离申请'
} else if ( routeName.value == 'HoldtookRequestMain') { } else if ( routeName.value == 'HoldtookRequestMain') {
tableObject.params = { tableObject.params = {
@ -126,7 +126,7 @@ const { tableObject, tableMethods } = useTable({
} }
fromInventoryStatus.value = 'HOLD' fromInventoryStatus.value = 'HOLD'
toInventoryStatus.value = "OK" toInventoryStatus.value = "OK"
businessType.value = 'HoldToOkRequest' businessType.value = 'HoldToOk'
importFileName.value = '隔离转合格申请' importFileName.value = '隔离转合格申请'
} else if ( routeName.value == 'HoldtoscrapRequestMain') { } else if ( routeName.value == 'HoldtoscrapRequestMain') {
tableObject.params = { tableObject.params = {
@ -135,7 +135,7 @@ const { tableObject, tableMethods } = useTable({
} }
fromInventoryStatus.value = 'HOLD' fromInventoryStatus.value = 'HOLD'
toInventoryStatus.value = "SCRAP" toInventoryStatus.value = "SCRAP"
businessType.value = 'HoldToScrapRequest' businessType.value = 'HoldToScrap'
importFileName.value = '隔离转报废申请' importFileName.value = '隔离转报废申请'
} else if ( routeName.value == 'OktoscrapRequestMain') { } else if ( routeName.value == 'OktoscrapRequestMain') {
tableObject.params = { tableObject.params = {
@ -144,7 +144,7 @@ const { tableObject, tableMethods } = useTable({
} }
fromInventoryStatus.value = 'OK' fromInventoryStatus.value = 'OK'
toInventoryStatus.value = "SCRAP" toInventoryStatus.value = "SCRAP"
businessType.value = 'OkToScrapRequest' businessType.value = 'OkToScrap'
importFileName.value = '合格转报废申请' importFileName.value = '合格转报废申请'
} else if ( routeName.value == 'ScraptoholdRequestMain') { } else if ( routeName.value == 'ScraptoholdRequestMain') {
tableObject.params = { tableObject.params = {
@ -153,11 +153,11 @@ const { tableObject, tableMethods } = useTable({
} }
fromInventoryStatus.value = 'SCRAP' fromInventoryStatus.value = 'SCRAP'
toInventoryStatus.value = "HOLD" toInventoryStatus.value = "HOLD"
businessType.value = 'ScrapToHoldRequest' businessType.value = 'ScrapToHold'
importFileName.value = '报废转隔离申请' importFileName.value = '报废转隔离申请'
} else if( routeName.value == 'InventorymoveRequestMain'){ } else if( routeName.value == 'InventorymoveRequestMain'){
fromInventoryStatus.value = null fromInventoryStatus.value = null
businessType.value = 'InventorymoveRequest' businessType.value = 'Move'
importFileName.value = '库存移动申请' importFileName.value = '库存移动申请'
}else { }else {
tableObject.params = { tableObject.params = {

Loading…
Cancel
Save