Browse Source

【EQI前端】编辑/新增/删除封装 + 功能页面等开发

web
安虹睿 2 weeks ago
parent
commit
5f53b4be6e
  1. 21
      Web/src/api/common/index.js
  2. 48
      Web/src/components/apiEditPop/index.vue
  3. 3
      Web/src/components/elTable/index.vue
  4. 3
      Web/src/components/importPop/index.vue
  5. 71
      Web/src/components/tablePage/index.vue
  6. 335
      Web/src/utils/common/apiTableColumns.js
  7. 12
      Web/src/views/demo/tablePageDemo.vue
  8. 1
      Web/src/views/logisticsPlan/supplierInvData/index.vue
  9. 1
      Web/src/views/logisticsPlan/supplierMrpDate/index.vue
  10. 1
      Web/src/views/logisticsPlan/supplierMrpMonth/index.vue
  11. 1
      Web/src/views/logisticsPlan/supplierMrpState/index.vue
  12. 1
      Web/src/views/logisticsPlan/supplierMrpWarning/index.vue
  13. 1
      Web/src/views/logisticsPlan/supplierPo/index.vue
  14. 1
      Web/src/views/logisticsPlan/supplierProHschedul/index.vue
  15. 1
      Web/src/views/logisticsPlan/supplierProPlaning/index.vue
  16. 1
      Web/src/views/logisticsPlan/supplierProTschedul/index.vue
  17. 1
      Web/src/views/logisticsPlan/supplierReturn/index.vue
  18. 1
      Web/src/views/logisticsPlan/supplierSaWeek/index.vue
  19. 14
      Web/src/views/logisticsPlan/supplierSinvData/index.vue
  20. 27
      Web/src/views/productionQuality/supplierBom/index.vue
  21. 28
      Web/src/views/productionQuality/supplierEmployee/index.vue
  22. 28
      Web/src/views/productionQuality/supplierInfo/index.vue
  23. 28
      Web/src/views/productionQuality/supplierProCps/index.vue
  24. 28
      Web/src/views/productionQuality/supplierProData/index.vue
  25. 28
      Web/src/views/productionQuality/supplierProFirstPassyield/index.vue
  26. 30
      Web/src/views/productionQuality/supplierProMaterialStock/index.vue
  27. 1
      Web/src/views/productionQuality/supplierProScheduling/index.vue

21
Web/src/api/common/index.js

@ -19,6 +19,15 @@ export function getCommonInfoById(urlName,id) {
}) })
} }
// 新增提交
export function postCommonCreate(urlName,data) {
return request({
url: `/api/${urlName}/create`,
method: 'post',
data
})
}
// 修改提交 // 修改提交
export function putCommonUpdate(urlName,data) { export function putCommonUpdate(urlName,data) {
return request({ return request({
@ -28,6 +37,18 @@ export function putCommonUpdate(urlName,data) {
}) })
} }
// 删除提交
export function deleteCommonApi(urlName,id) {
return request({
url: `/api/${urlName}/delete`,
method: 'DELETE',
headers:{
'content-type':'application/json-patch+json'
},
data:id
})
}
// 导出 // 导出
export function postCommonExport(urlName,data) { export function postCommonExport(urlName,data) {
return request({ return request({

48
Web/src/components/apiEditPop/index.vue

@ -1,7 +1,7 @@
<template> <template>
<el-dialog <el-dialog
v-model="dialogVisible" v-model="dialogVisible"
title="编辑" :title="handleType=='create' ? '新增' : '编辑'"
width="70%" width="70%"
:close-on-click-modal="false" :close-on-click-modal="false"
top="10vh" top="10vh"
@ -12,7 +12,7 @@
v-if="!formLoading" v-if="!formLoading"
:model="formData" :model="formData"
:size="'large'" :size="'large'"
:rules="props.formRules"> :rules="formRulesData">
<el-row :gutter="40"> <el-row :gutter="40">
<el-col <el-col
v-for="(item, index) in formConfig" v-for="(item, index) in formConfig"
@ -83,9 +83,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
defineOptions({ name: 'apiEditPop' }) defineOptions({ name: 'apiEditPop' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted,nextTick } from 'vue'
import { ElDialog,ElMessage } from 'element-plus' import { ElDialog,ElMessage } from 'element-plus'
import { getCommonInfoById } from '@/api/common/index' import { getCommonInfoById } from '@/api/common/index'
import apiTableColumns from '@/utils/common/apiTableColumns'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -94,6 +95,8 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref(null)// const formData = ref(null)//
const formConfig = ref(null)// const formConfig = ref(null)//
const handleType = ref(null)//
const formRulesData = ref(null)
const props = defineProps({ const props = defineProps({
// api // api
@ -119,9 +122,27 @@ const resetForm = () => {
/** 打开弹窗 */ /** 打开弹窗 */
const open = (configs,row) => { const open = (configs,row) => {
resetForm() resetForm()
getFormRules()
nextTick(() => {
dialogVisible.value = true dialogVisible.value = true
formConfig.value = configs formConfig.value = configs
//
if(row){
handleType.value='edit'
getFormData(row.uId) getFormData(row.uId)
}else{
handleType.value='create'
//
formData.value = {}
configs.forEach(item=>{
if(item.type && item.type == 'number'){
formData.value[item.prop] = 0
}else{
formData.value[item.prop] = ""
}
})
}
})
} }
/** 关闭弹窗 */ /** 关闭弹窗 */
@ -144,6 +165,20 @@ const validate = (data) => {
defineExpose({ open,close,changeLoading,validate }) defineExpose({ open,close,changeLoading,validate })
//
const getFormRules = () => {
if(props.formRules) {
formRulesData.value = props.formRules
}else{
formRulesData.value = {}
apiTableColumns[props.apiName].forEach(item=>{
if(item.required || (item.searchFilter && item.searchFilter.required)){
formRulesData.value[item.prop] = [{ required: true, message: '必填项', trigger: 'blur' }]
}
})
}
}
/** 获取表单 */ /** 获取表单 */
const getFormData = async (uId) => { const getFormData = async (uId) => {
formLoading.value = true formLoading.value = true
@ -152,6 +187,11 @@ const getFormData = async (uId) => {
formData.value = res.data formData.value = res.data
formLoading.value = false formLoading.value = false
}) })
.catch(err=>{
dialogVisible.value = false
ElMessage.error('获取失败,请重试')
})
.finally(()=>{formLoading.value = false})
} }
// //
@ -166,7 +206,7 @@ const getItemConfig = (item,type='type') => {
const emits = defineEmits(['submitEditForm']) const emits = defineEmits(['submitEditForm'])
/** 提交表单 */ /** 提交表单 */
const submitForm = async () => { const submitForm = async () => {
emits('submitEditForm',formData.value,formConfig.value) emits('submitEditForm',handleType.value,formData.value,formConfig.value)
} }

3
Web/src/components/elTable/index.vue

@ -71,6 +71,7 @@
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-for="(btn,index) in props.rightOperation" v-for="(btn,index) in props.rightOperation"
v-show="typeof btn.hide == 'function' ? !btn.hide(scope.row,scope) : !btn.hide"
:key="index" :key="index"
:type="btn.type" :type="btn.type"
:link="btn.link" :link="btn.link"
@ -114,7 +115,7 @@
// //
rightOperationColumnWidth:{ rightOperationColumnWidth:{
type: Number, type: Number,
default: 120 default: 150
}, },
// table // table
tableData: { tableData: {

3
Web/src/components/importPop/index.vue

@ -107,6 +107,7 @@ const importTemplate = () => {
.then(res=>{ .then(res=>{
downloadByData(res.data,route.meta.title+'_模板.xlsx') downloadByData(res.data,route.meta.title+'_模板.xlsx')
}) })
.catch(err=>{ElMessage.error('获取失败,请重试!')})
.finally(() => (formLoading.value = false)) .finally(() => (formLoading.value = false))
} }
@ -134,7 +135,7 @@ const submitFormSuccess = (response: any) => {
if(response.code == '200'){ if(response.code == '200'){
ElMessage.success('导入成功!') ElMessage.success('导入成功!')
}else{ }else{
ElMessage.error(response.msg) ElMessage.error(response.message)
} }
} }

71
Web/src/components/tablePage/index.vue

@ -111,7 +111,9 @@
getCommonPaged, getCommonPaged,
getCommonDeatailPaged, getCommonDeatailPaged,
postCommonExport, postCommonExport,
postCommonCreate,
putCommonUpdate, putCommonUpdate,
deleteCommonApi,
getCommonCustominvoke getCommonCustominvoke
} from '@/api/common/index' } from '@/api/common/index'
import { ElMessageBox, ElMessage,ElTable, ElTableColumn } from 'element-plus' import { ElMessageBox, ElMessage,ElTable, ElTableColumn } from 'element-plus'
@ -133,6 +135,7 @@
loading:false, loading:false,
searchBtnOptions:{ searchBtnOptions:{
search:{icon:'Search',auth:':page',label:'查询',type:null}, search:{icon:'Search',auth:':page',label:'查询',type:null},
create:{icon:'Plus',auth:':create',label:'新增',type:'primary'},
import:{icon:'BottomRight',auth:':import',label:'导入',type:'warning'}, import:{icon:'BottomRight',auth:':import',label:'导入',type:'warning'},
export:{icon:'TopRight',auth:':export',label:'导出',type:'success'}, export:{icon:'TopRight',auth:':export',label:'导出',type:'success'},
custominvoke:{icon:'Position',auth:':custominvoke',label:'手动传出',type:'primary'}, custominvoke:{icon:'Position',auth:':custominvoke',label:'手动传出',type:'primary'},
@ -187,6 +190,16 @@
type: Object, type: Object,
default: null default: null
}, },
// writeState=true
// readState使,
// =
apiRightHideConfig:{
type: Object,
default: {
apiUpdate:{prop:'writeState',ruleValue:true},
apiDelete:{prop:'writeState',ruleValue:true},
}
},
// table // table
tableColumns: { tableColumns: {
type: Object, type: Object,
@ -266,11 +279,19 @@
let _apiArr = props.showApiRightOperation || props.rightOperation.split(',') let _apiArr = props.showApiRightOperation || props.rightOperation.split(',')
let _config = { let _config = {
apiUpdate:{label:'编辑',type:'warning'}, apiUpdate:{label:'编辑',type:'warning'},
apiDelete:{label:'删除',type:'danger'},
} }
let _btns = [] let _btns = []
if(_apiArr && _apiArr.length > 0){ if(_apiArr && _apiArr.length > 0){
_apiArr.forEach(item => { _apiArr.forEach(item => {
_btns.push({label:_config[item].label,name:item,link:true,type:_config[item].type,auth:props.apiName+':'+item}) _btns.push({
label:_config[item].label,
name:item,
link:true,
type:_config[item].type,
auth:props.apiName+':'+item,
hide:(row,scope) => {return row[props.apiRightHideConfig[item].prop] == props.apiRightHideConfig[item].ruleValue}
})
}); });
} }
// api // api
@ -290,13 +311,45 @@
let _list = _tableColums.filter(item => !item.noEdit) let _list = _tableColums.filter(item => !item.noEdit)
apiEditPopRef.value.open(_list,scope.row) apiEditPopRef.value.open(_list,scope.row)
} }
//
if(btn.name == 'apiDelete'){
ElMessageBox.confirm(`是否确定删除?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
state.loading = true
deleteCommonApi(props.apiName,scope.row.uId)
.then(res=>{
ElMessage.success('操作成功!')
getTableData(1);
})
.catch(err=>{ElMessage.error('操作失败!')})
.finally(()=>{state.loading = false})
})
}
emits('rightOperationHadel',btn,scope) emits('rightOperationHadel',btn,scope)
} }
// todo:putCommonUpdate //
const submitEditForm = async (formData,formConfig) => { const submitEditForm = async (type,formData,formConfig) => {
apiEditPopRef.value.validate((valid) => { apiEditPopRef.value.validate((valid) => {
if(valid){ if(valid){
//
if(type == 'create'){
if(formData.hasOwnProperty('createUser')){formData.createUser = userInfo.realName}
if(formData.hasOwnProperty('createByUser')){formData.createByUser = userInfo.realName}
if(formData.hasOwnProperty('createTime')){formData.createTime = formatDate(new Date(), "YYYY-mm-dd HH:MM:SS")}
apiEditPopRef.value.changeLoading(true)
postCommonCreate(props.apiName,formData)
.then(res=>{
apiEditPopRef.value.close()
ElMessage.success('操作成功!')
getTableData(1);
})
.catch(err=>{ElMessage.error('操作失败!')})
.finally(()=>{apiEditPopRef.value.changeLoading(false)})
}else{
// //
if( if(
(formData.hasOwnProperty('updateByUser') && formData.hasOwnProperty('updateTime')) (formData.hasOwnProperty('updateByUser') && formData.hasOwnProperty('updateTime'))
@ -319,8 +372,10 @@
ElMessage.success('操作成功!') ElMessage.success('操作成功!')
getTableData(1); getTableData(1);
}) })
.catch(err=>{ElMessage.error('操作失败!')})
.finally(()=>{apiEditPopRef.value.changeLoading(false)}) .finally(()=>{apiEditPopRef.value.changeLoading(false)})
} }
}
}) })
} }
@ -393,6 +448,7 @@
state.tableData = resp.data.data state.tableData = resp.data.data
state.pager.total = resp.data.totalCount state.pager.total = resp.data.totalCount
}) })
.catch(err=>{ElMessage.error('数据获取失败!')})
.finally(() => (state.loading = false)) .finally(() => (state.loading = false))
}else{ }else{
state.loading = true state.loading = true
@ -403,6 +459,7 @@
state.tableData = resp.data.data state.tableData = resp.data.data
state.pager.total = resp.data.totalCount state.pager.total = resp.data.totalCount
}) })
.catch(err=>{ElMessage.error('数据获取失败!')})
.finally(() => (state.loading = false)) .finally(() => (state.loading = false))
} }
} }
@ -415,6 +472,12 @@
if(btn == 'search'){ if(btn == 'search'){
getTableData() getTableData()
} }
//
else if (btn == 'create'){
let _tableColums = getTableColumns()
let _list = _tableColums.filter(item => !item.noEdit)
apiEditPopRef.value.open(_list)
}
// //
else if (btn == 'import'){ else if (btn == 'import'){
importPopRef.value.open() importPopRef.value.open()
@ -427,6 +490,7 @@
.then((res) => { .then((res) => {
downloadByData(res.data,route.meta.title+'.xlsx') downloadByData(res.data,route.meta.title+'.xlsx')
}) })
.catch(err=>{ElMessage.error('操作失败!')})
.finally(() => (state.loading = false)) .finally(() => (state.loading = false))
} }
// //
@ -446,6 +510,7 @@
ElMessage.success('操作成功!') ElMessage.success('操作成功!')
getTableData(1)// getTableData(1)//
}) })
.catch(err=>{ElMessage.error('操作失败!')})
.finally(() => (state.loading = false)) .finally(() => (state.loading = false))
}) })
} }

335
Web/src/utils/common/apiTableColumns.js

@ -286,19 +286,19 @@ const apiTableColumns = {
], ],
// 供应商共享库存 // 供应商共享库存
cherysuppliersinvdata:[ cherysuppliersinvdata:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'serialNumber',title:'行项目号'}, {prop:'serialNumber',title:'行项目号'},
{prop:'materialCode',title:'零件号'}, {prop:'materialCode',title:'零件号',required:true},
{prop:'materialDescription',title:'零件名称'}, {prop:'materialDescription',title:'零件名称',required:true},
{prop:'materialType',title:'物料类型',type:'filter',options:EnumList.materialType}, {prop:'materialType',title:'物料类型',type:'filter',options:EnumList.materialType},
{prop:'quantityCurrent',title:'当前库存数量',type:'number'}, {prop:'quantityCurrent',title:'当前库存数量',type:'number',required:true},
{prop:'quantityPlan',title:'原材料在途数量',type:'number'}, {prop:'quantityPlan',title:'原材料在途数量',type:'number',required:true},
{prop:'inventoryStatus',title:'库存状态',type:'filter',options:EnumList.inventoryStatus}, {prop:'inventoryStatus',title:'库存状态',type:'filter',options:EnumList.inventoryStatus,required:true},
{prop:'safetyStock',title:'安全库存',type:'number'}, {prop:'safetyStock',title:'安全库存',type:'number',required:true},
{prop:'productionCycle',title:'生产/采购周期'}, {prop:'productionCycle',title:'生产/采购周期',required:true},
{prop:'dataUpdateTime',title:'库存更新时间',type:'datetime',width:180}, {prop:'dataUpdateTime',title:'库存更新时间',type:'datetime',width:180},
{prop:'supplierBatch',title:'批次'}, {prop:'supplierBatch',title:'批次',required:true},
{prop:'supplieryxqDate',title:'效期截止日期',type:'datetime',width:180}, {prop:'supplieryxqDate',title:'效期截止日期',type:'datetime',width:180},
{prop:'creationTime',title:'创建时间',type:'datetime',width:180,noEdit:true}, {prop:'creationTime',title:'创建时间',type:'datetime',width:180,noEdit:true},
], ],
@ -354,36 +354,36 @@ const apiTableColumns = {
/*生产质量 */ /*生产质量 */
// 来料检验数据 // 来料检验数据
supplierpromaterialstock:[ supplierpromaterialstock:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'supplierSubCode',title:'供应商子零件编号',width:180}, {prop:'supplierSubCode',title:'供应商子零件编号',width:180,required:true},
{prop:'supplierSubName',title:'供应商子零件名称',width:180}, {prop:'supplierSubName',title:'供应商子零件名称',width:180,required:true},
{prop:'subSupplierCode',title:'分供方代码'}, {prop:'subSupplierCode',title:'分供方代码',required:true},
{prop:'subSupplierName',title:'分供方名称'}, {prop:'subSupplierName',title:'分供方名称',required:true},
{prop:'subSupplierAddress',title:'分供方地址'}, {prop:'subSupplierAddress',title:'分供方地址',required:true},
{prop:'componentCode',title:'分供方子件编码'}, {prop:'componentCode',title:'分供方子件编码'},
{prop:'componentName',title:'分供方子件名称'}, {prop:'componentName',title:'分供方子件名称'},
{prop:'subBatchNo',title:'子件批次号'}, {prop:'subBatchNo',title:'子件批次号',required:true},
{prop:'subBatchNum',title:'子件批次数量',type:'number'}, {prop:'subBatchNum',title:'子件批次数量',type:'number',required:true},
{prop:'subBatchSn',title:'子件SN码'}, {prop:'subBatchSn',title:'子件SN码'},
{prop:'empCode',title:'检验人员编号'}, {prop:'empCode',title:'检验人员编号',required:true},
{prop:'empName',title:'检验人员姓名'}, {prop:'empName',title:'检验人员姓名',required:true},
{prop:'deviceCode',title:'检测设备编号'}, {prop:'deviceCode',title:'检测设备编号',required:true},
{prop:'deviceName',title:'检测设备名称'}, {prop:'deviceName',title:'检测设备名称',required:true},
{prop:'featureName',title:'参数/特性名称'}, {prop:'featureName',title:'参数/特性名称',required:true},
{prop:'featureUnit',title:'参数/特性单位'}, {prop:'featureUnit',title:'参数/特性单位',required:true},
{prop:'standardValue',title:'参数/特性标准值',width:180}, {prop:'standardValue',title:'参数/特性标准值',width:180,required:true},
{prop:'featureUpper',title:'参数/特性上限值',width:180}, {prop:'featureUpper',title:'参数/特性上限值',width:180,required:true},
{prop:'featureLower',title:'参数/特性下限值',width:180}, {prop:'featureLower',title:'参数/特性下限值',width:180,required:true},
{prop:'featureValue',title:'参数/特性实测值',width:180}, {prop:'featureValue',title:'参数/特性实测值',width:180,required:true},
{prop:'checkNo',title:'来料检验单号'}, {prop:'checkNo',title:'来料检验单号',required:true},
{prop:'checkResult',title:'批次的最终判定结果',type:'filter',options:EnumList.checkResult,width:180}, {prop:'checkResult',title:'批次的最终判定结果',type:'filter',options:EnumList.checkResult,width:180,required:true},
{prop:'checkTime',title:'检验时间',type:'datetime',width:180}, {prop:'checkTime',title:'检验时间',type:'datetime',width:180,required:true},
{prop:'samplingRate',title:'控制项要求频率',type:'number'}, {prop:'samplingRate',title:'控制项要求频率',type:'number'},
{prop:'limitUpdateTime',title:'上下限更新时间',type:'datetime',width:180}, {prop:'limitUpdateTime',title:'上下限更新时间',type:'datetime',width:180},
{prop:'vendorFieldDesc',title:'控制项描述'}, {prop:'vendorFieldDesc',title:'控制项描述'},
{prop:'vendorFieldCode',title:'控制项代码'}, {prop:'vendorFieldCode',title:'控制项代码',required:true},
{prop:'deadLine',title:'库存有效日期',type:'datetime',width:180}, {prop:'deadLine',title:'库存有效日期',type:'datetime',width:180,required:true},
], ],
// 排产数据 // 排产数据
cherysupplierproscheduling:[ cherysupplierproscheduling:[
@ -409,46 +409,46 @@ const apiTableColumns = {
], ],
// 供应商基础信息 // 供应商基础信息
cherysupplierinfo:[ cherysupplierinfo:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'plantId',title:'工厂代码'}, {prop:'plantId',title:'工厂代码',required:true},
{prop:'plantName',title:'工厂名称'}, {prop:'plantName',title:'工厂名称',required:true},
{prop:'workshopId',title:'车间代码'}, {prop:'workshopId',title:'车间代码',required:true},
{prop:'workshopName',title:'车间名称'}, {prop:'workshopName',title:'车间名称',required:true},
{prop:'productionLineId',title:'产线代码'}, {prop:'productionLineId',title:'产线代码',required:true},
{prop:'productionLineName',title:'产线名称'}, {prop:'productionLineName',title:'产线名称',required:true},
{prop:'stationId',title:'工位代码'}, {prop:'stationId',title:'工位代码',required:true},
{prop:'stationName',title:'工位名称'}, {prop:'stationName',title:'工位名称',required:true},
{prop:'keyStation',title:'是否关键工位',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'keyStation',title:'是否关键工位',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'dataUpdateTime',title:'供应商修改时间',width:180,type:'datetime'}, {prop:'dataUpdateTime',title:'供应商修改时间',width:180,type:'datetime',required:true},
{prop:'productionLineOrder',title:'产线顺序',type:'number'}, {prop:'productionLineOrder',title:'产线顺序',type:'number',required:true},
{prop:'stationOrder',title:'工位顺序',type:'number'}, {prop:'stationOrder',title:'工位顺序',type:'number',required:true},
{prop:'vendorProductNo',title:'供应商总成零件号',width:180}, {prop:'vendorProductNo',title:'供应商总成零件号',width:180,required:true},
{prop:'vendorProductName',title:'供应商总成零件名称',width:180}, {prop:'vendorProductName',title:'供应商总成零件名称',width:180,required:true},
{prop:'cheryProductNo',title:'奇瑞零件号'}, {prop:'cheryProductNo',title:'奇瑞零件号',required:true},
{prop:'cheryProductName',title:'奇瑞零件名称',width:180}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true},
], ],
// 人员资质信息 // 人员资质信息
cherysupplieremployee:[ cherysupplieremployee:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'plantId',title:'工厂代码'}, {prop:'plantId',title:'工厂代码',required:true},
{prop:'plantName',title:'工厂名称'}, {prop:'plantName',title:'工厂名称',required:true},
{prop:'workshopId',title:'车间代码'}, {prop:'workshopId',title:'车间代码',required:true},
{prop:'workshopName',title:'车间名称'}, {prop:'workshopName',title:'车间名称',required:true},
{prop:'productionLineId',title:'产线代码'}, {prop:'productionLineId',title:'产线代码',required:true},
{prop:'productionLineName',title:'产线名称'}, {prop:'productionLineName',title:'产线名称',required:true},
{prop:'stationId',title:'工位代码'}, {prop:'stationId',title:'工位代码',required:true},
{prop:'stationName',title:'工位名称'}, {prop:'stationName',title:'工位名称',required:true},
{prop:'operatorId',title:'工位人员账号',width:160}, {prop:'operatorId',title:'工位人员账号',width:160,required:true},
{prop:'operatorName',title:'工位人员姓名',width:160}, {prop:'operatorName',title:'工位人员姓名',width:160,required:true},
{prop:'haveQuantity',title:'是否有资质',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'haveQuantity',title:'是否有资质',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'dataUpdateTime',title:'供应商修改时间',width:180,type:'datetime'}, {prop:'dataUpdateTime',title:'供应商修改时间',width:180,type:'datetime',required:true},
{prop:'positionId',title:'岗位代码'}, {prop:'positionId',title:'岗位代码',required:true},
{prop:'positionName',title:'岗位名称'}, {prop:'positionName',title:'岗位名称',required:true},
{prop:'qualificationLevel',title:'资质等级'}, {prop:'qualificationLevel',title:'资质等级',required:true},
{prop:'checkInTime',title:'资质获取时间',width:180,type:'datetime'}, {prop:'checkInTime',title:'资质获取时间',width:180,type:'datetime',required:true},
{prop:'checkOutTime',title:'资质失去时间',width:180,type:'datetime'}, {prop:'checkOutTime',title:'资质失去时间',width:180,type:'datetime',required:true},
], ],
// BOM主数据 // BOM主数据
cherysupplierbom:[ cherysupplierbom:[
@ -472,96 +472,97 @@ const apiTableColumns = {
], ],
// 过程控制项质量数据 // 过程控制项质量数据
cherysupplierprocps:[ cherysupplierprocps:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'vendorProductNo',title:'供应商总成零件号',width:180}, {prop:'vendorProductNo',title:'供应商总成零件号',width:180,required:true},
{prop:'vendorProductName',title:'供应商总成零件名称',width:180}, {prop:'vendorProductName',title:'供应商总成零件名称',width:180,required:true},
{prop:'vendorProductSn',title:'供应商总成SN码',width:180}, {prop:'vendorProductSn',title:'供应商总成SN码',width:180,required:true},
{prop:'vendorProductBatch',title:'供应商总成批次号',width:180}, {prop:'vendorProductBatch',title:'供应商总成批次号',width:180,required:true},
{prop:'cheryProductNo',title:'奇瑞零件号'}, {prop:'cheryProductNo',title:'奇瑞零件号',required:true},
{prop:'cheryProductName',title:'奇瑞零件名称',width:180}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true},
{prop:'cheryProductSn',title:'奇瑞SN码'}, {prop:'cheryProductSn',title:'奇瑞SN码',required:true},
{prop:'productBatchNo',title:'生产批次号'}, {prop:'productBatchNo',title:'生产批次号',required:true},
{prop:'manufactureNo',title:'生产工单号'}, {prop:'manufactureNo',title:'生产工单号',required:true},
{prop:'plantId',title:'工厂代码'}, {prop:'plantId',title:'工厂代码',required:true},
{prop:'plantName',title:'工厂名称'}, {prop:'plantName',title:'工厂名称',required:true},
{prop:'workshopId',title:'车间代码'}, {prop:'workshopId',title:'车间代码',required:true},
{prop:'workshopName',title:'车间名称'}, {prop:'workshopName',title:'车间名称',required:true},
{prop:'productionLineId',title:'产线代码'}, {prop:'productionLineId',title:'产线代码',required:true},
{prop:'productionLineName',title:'产线名称'}, {prop:'productionLineName',title:'产线名称',required:true},
{prop:'stationId',title:'工位代码'}, {prop:'stationId',title:'工位代码',required:true},
{prop:'stationName',title:'工位名称'}, {prop:'stationName',title:'工位名称',required:true},
{prop:'empCode',title:'工位人员编号'}, {prop:'empCode',title:'工位人员编号',required:true},
{prop:'empName',title:'工位人员姓名'}, {prop:'empName',title:'工位人员姓名',required:true},
{prop:'vendorFieldName',title:'控制项名称'}, {prop:'vendorFieldName',title:'控制项名称',required:true},
{prop:'vendorFieldCode',title:'控制项代码'}, {prop:'vendorFieldCode',title:'控制项代码',required:true},
{prop:'gatherSpot',title:'控制项点位'}, {prop:'gatherSpot',title:'控制项点位'},
{prop:'samplingRate',title:'控制项要求频率',type:'number'}, {prop:'samplingRate',title:'控制项要求频率',type:'number'},
{prop:'limitUpdateTime',title:'上下限更新时间',type:'datetime',width:180}, {prop:'limitUpdateTime',title:'上下限更新时间',type:'datetime',width:180},
{prop:'vendorFieldDesc',title:'控制项描述'}, {prop:'vendorFieldDesc',title:'控制项描述'},
{prop:'carrierCode',title:'载体编码'}, {prop:'carrierCode',title:'载体编码'},
{prop:'intputQty',title:'投入数量',type:'number'}, {prop:'intputQty',title:'投入数量',type:'number',required:true},
{prop:'fttQty',title:'一次合格数量',type:'number'}, {prop:'fttQty',title:'一次合格数量',type:'number',required:true},
{prop:'parameter',title:'参数',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'parameter',title:'参数',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'characteristic',title:'特性',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'characteristic',title:'特性',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'cc',title:'cc项',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'cc',title:'cc项',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'sc',title:'sc项',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'sc',title:'sc项',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'spc',title:'SPC',width:160,type:'tagFilter',options:EnumList.whetherByYN}, {prop:'spc',title:'SPC',width:160,type:'tagFilter',options:EnumList.whetherByYN,required:true},
{prop:'standardValue',title:'控制项标准值',width:150}, {prop:'standardValue',title:'控制项标准值',width:150,required:true},
{prop:'upperLimit',title:'控制项上限',type:'number'}, {prop:'upperLimit',title:'控制项上限',type:'number',required:true},
{prop:'lowerLimit',title:'控制项下限',type:'number'}, {prop:'lowerLimit',title:'控制项下限',type:'number',required:true},
{prop:'decimalValue',title:'控制项实测值',type:'number'}, {prop:'decimalValue',title:'控制项实测值',type:'number',required:true},
{prop:'unitCn',title:'控制项值的单位名称',width:180}, {prop:'unitCn',title:'控制项值的单位名称',width:180},
{prop:'unitEn',title:'控制项单位英文',width:180}, {prop:'unitEn',title:'控制项单位英文',width:180,required:true},
{prop:'checkResult',title:'检测结果'}, {prop:'checkResult',title:'检测结果',required:true},
{prop:'detectionMode',title:'在线检测',type:'filter',options:EnumList.detectionMode}, {prop:'detectionMode',title:'在线检测',type:'filter',options:EnumList.detectionMode},
{prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift}, {prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift,required:true},
{prop:'collectTime',title:'采集时间',type:'datetime',width:180}, {prop:'collectTime',title:'采集时间',type:'datetime',width:180,required:true},
{prop:'checkMode',title:'检测方式',type:'filter',options:EnumList.checkMode}, {prop:'checkMode',title:'检测方式',type:'filter',options:EnumList.checkMode,required:true},
{prop:'deviceCode',title:'检测设备编号'}, {prop:'deviceCode',title:'检测设备编号',required:true},
{prop:'deviceName',title:'检测设备名称'}, {prop:'deviceName',title:'检测设备名称',required:true},
], ],
// 生产过程数据 // 生产过程数据
cherysupplierprodata:[ cherysupplierprodata:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'plantId',title:'工厂代码'}, {prop:'plantId',title:'工厂代码',required:true},
{prop:'plantName',title:'工厂名称'}, {prop:'plantName',title:'工厂名称',required:true},
{prop:'workshopId',title:'车间代码'}, {prop:'workshopId',title:'车间代码',required:true},
{prop:'workshopName',title:'车间名称'}, {prop:'workshopName',title:'车间名称',required:true},
{prop:'productionLineId',title:'产线代码'}, {prop:'productionLineId',title:'产线代码',required:true},
{prop:'productionLineName',title:'产线名称'}, {prop:'productionLineName',title:'产线名称',required:true},
{prop:'stationId',title:'工位代码'}, {prop:'stationId',title:'工位代码',required:true},
{prop:'stationName',title:'工位名称'}, {prop:'stationName',title:'工位名称',required:true},
{prop:'empCode',title:'工位人员编号',width:160}, {prop:'empCode',title:'工位人员编号',width:160,required:true},
{prop:'empName',title:'工位人员姓名',width:160}, {prop:'empName',title:'工位人员姓名',width:160,required:true},
{prop:'vendorProductName',title:'供应商总成零件名称',width:180}, {prop:'vendorProductName',title:'供应商总成零件名称',width:180,required:true},
{prop:'vendorProductNo',title:'供应商总成零件号',width:180}, {prop:'vendorProductNo',title:'供应商总成零件号',width:180,required:true},
{prop:'vendorProductBatch',title:'供应商总成批次号'}, {prop:'vendorProductBatch',title:'供应商总成批次号',required:true},
{prop:'vendorProductSn',title:'供应商总成SN码'}, {prop:'vendorProductSn',title:'供应商总成SN码',required:true},
{prop:'subProdNo',title:'子件编码'}, {prop:'subProdNo',title:'子件编码',required:true},
{prop:'subProdName',title:'子件名称'}, {prop:'subProdName',title:'子件名称',required:true},
{prop:'subBatchNo',title:'子件批次号'}, {prop:'subBatchNo',title:'子件批次号',required:true},
{prop:'childPackageInfo',title:'子件分包号'}, {prop:'childPackageInfo',title:'子件分包号'},
{prop:'subProdNum',title:'子件扣料数量',type:'number',width:160}, {prop:'subProdNum',title:'子件扣料数量',type:'number',width:160,required:true},
{prop:'childSource',title:'子件物料来源',width:160}, {prop:'subProdSn',title:'子件SN码',width:160,required:true},
{prop:'childSource',title:'子件物料来源',width:160,required:true},
{prop:'subSupplierCode',title:'分供方代码'}, {prop:'subSupplierCode',title:'分供方代码'},
{prop:'subSupplierName',title:'分供方名称'}, {prop:'subSupplierName',title:'分供方名称'},
{prop:'cheryProductNo',title:'奇瑞零件号'}, {prop:'cheryProductNo',title:'奇瑞零件号',required:true},
{prop:'cheryProductName',title:'奇瑞零件名称',width:180}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true},
{prop:'cheryProductSn',title:'奇瑞SN码'}, {prop:'cheryProductSn',title:'奇瑞SN码',required:true},
{prop:'manufactureNo',title:'生产工单号'}, {prop:'manufactureNo',title:'生产工单号',required:true},
{prop:'productBatchNo',title:'生产批次号'}, {prop:'productBatchNo',title:'生产批次号'},
{prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift}, {prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift,required:true},
{prop:'materialInputTime',title:'进工位的时间',type:'datetime',width:180}, {prop:'materialInputTime',title:'进工位的时间',type:'datetime',width:180,required:true},
{prop:'materialOutputTime',title:'出工位的时间',type:'datetime',width:180}, {prop:'materialOutputTime',title:'出工位的时间',type:'datetime',width:180,required:true},
{prop:'vendorFieldNum',title:'装配设备编号',width:160}, {prop:'vendorFieldNum',title:'装配设备编号',width:160,required:true},
{prop:'vendorFieldName',title:'装配设备名称',width:160}, {prop:'vendorFieldName',title:'装配设备名称',width:160,required:true},
{prop:'instrumentQualityStatus',title:'设备判定的质量状态',type:'filter',options:EnumList.checkResult,width:180}, {prop:'instrumentQualityStatus',title:'设备判定的质量状态',type:'filter',options:EnumList.checkResult,width:180},
{prop:'manualQualityStatus',title:'人工判定的质量状态',type:'filter',options:EnumList.checkResult,width:180}, {prop:'manualQualityStatus',title:'人工判定的质量状态',type:'filter',options:EnumList.checkResult,width:180},
{prop:'finalQualityStatus',title:'最终质量状态',type:'filter',options:EnumList.checkResult,width:180}, {prop:'finalQualityStatus',title:'最终质量状态',type:'filter',options:EnumList.checkResult,width:180,required:true},
{prop:'collectTime',title:'采集时间',type:'datetime',width:180}, {prop:'collectTime',title:'采集时间',type:'datetime',width:180,required:true},
{prop:'dateTime',title:'子件绑定扫码时间',type:'datetime',width:180}, {prop:'dateTime',title:'子件绑定扫码时间',type:'datetime',width:180,required:true},
{prop:'parentHardwareRevision',title:'父件硬件版本号',width:180}, {prop:'parentHardwareRevision',title:'父件硬件版本号',width:180},
{prop:'parentSoftwareRevision',title:'父件软件版本号',width:180}, {prop:'parentSoftwareRevision',title:'父件软件版本号',width:180},
{prop:'childHardwareRevision',title:'子件硬件版本号',width:180}, {prop:'childHardwareRevision',title:'子件硬件版本号',width:180},
@ -569,28 +570,28 @@ const apiTableColumns = {
], ],
// 产品一次合格率 // 产品一次合格率
cherysupplierprofirstpassyield:[ cherysupplierprofirstpassyield:[
{prop:'supplierCode',title:'供应商代码'}, {prop:'supplierCode',title:'供应商代码',required:true},
{prop:'supplierName',title:'供应商名称'}, {prop:'supplierName',title:'供应商名称',required:true},
{prop:'vendorProductNo',title:'供应商总成零件号',width:180}, {prop:'vendorProductNo',title:'供应商总成零件号',width:180,required:true},
{prop:'vendorProductName',title:'供应商总成零件名称',width:180}, {prop:'vendorProductName',title:'供应商总成零件名称',width:180,required:true},
{prop:'plantId',title:'工厂代码'}, {prop:'plantId',title:'工厂代码',required:true},
{prop:'plantName',title:'工厂名称'}, {prop:'plantName',title:'工厂名称',required:true},
{prop:'workshopId',title:'车间代码'}, {prop:'workshopId',title:'车间代码',required:true},
{prop:'workshopName',title:'车间名称'}, {prop:'workshopName',title:'车间名称',required:true},
{prop:'productionLineId',title:'产线代码'}, {prop:'productionLineId',title:'产线代码',required:true},
{prop:'productionLineName',title:'产线名称'}, {prop:'productionLineName',title:'产线名称',required:true},
{prop:'cheryProductNo',title:'奇瑞零件号'}, {prop:'cheryProductNo',title:'奇瑞零件号',required:true},
{prop:'cheryProductName',title:'奇瑞零件名称',width:180}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true},
{prop:'manufactureNo',title:'生产工单号'}, {prop:'manufactureNo',title:'生产工单号',required:true},
{prop:'productBatchNo',title:'生产批次号'}, {prop:'productBatchNo',title:'生产批次号',required:true},
{prop:'workOrderNumber',title:'批次计划数量',type:'number',width:160}, {prop:'workOrderNumber',title:'批次计划数量',type:'number',width:160,required:true},
{prop:'defectiveNumber',title:'不合格数',type:'number',width:160}, {prop:'defectiveNumber',title:'不合格数',type:'number',width:160,required:true},
{prop:'acceptableNumber',title:'合格数',type:'number',width:160}, {prop:'acceptableNumber',title:'合格数',type:'number',width:160,required:true},
{prop:'oncePassRateRealValue',title:'一次合格率实际值',type:'number',width:180}, {prop:'oncePassRateRealValue',title:'一次合格率实际值',type:'number',width:180,required:true},
{prop:'oncePassRateTagValue',title:'一次合格率目标值',type:'number',width:180}, {prop:'oncePassRateTagValue',title:'一次合格率目标值',type:'number',width:180,required:true},
{prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift}, {prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift,required:true},
{prop:'statisticalTime',title:'生产日期',width:180,type:'datetime'}, {prop:'statisticalTime',title:'生产日期',width:180,type:'datetime',required:true},
{prop:'dateTime',title:'值统计时间',width:180,type:'datetime'}, {prop:'dateTime',title:'值统计时间',width:180,type:'datetime',required:true},
], ],
// 工位一次合格率 // 工位一次合格率
cherysupplierprostationfirstpassyield:[ cherysupplierprostationfirstpassyield:[

12
Web/src/views/demo/tablePageDemo.vue

@ -13,7 +13,7 @@ import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'
const state = reactive({ const state = reactive({
apiName:'supplierproplaning', apiName:'tablePageDemo',
searchFilter: { searchFilter: {
materialCode: null, materialCode: null,
// createTime:null, // createTime:null,
@ -33,10 +33,16 @@ const state = reactive({
// ], // ],
// 1api // 1api
// rightOperation:'apiUpdate', // rightOperation:'apiUpdate,apiDelete',
//2,api使showApiRightOperation //2,api使showApiRightOperation
// rightOperation:[], // rightOperation:[],
// showApiRightOperation:['apiUpdate'] // showApiRightOperation:['apiUpdate']
// /rule
// apiEditFormRules:{
// supplierCode: [{ required: true, message: '', trigger: 'blur' }],
// supplierName: [{ required: true, message: '', trigger: 'blur' }],
// deadLine: [{ required: true, message: '', trigger: 'blur' }],
// }
}) })
// //
@ -52,4 +58,6 @@ const state = reactive({
// @leftOperationHadel="leftOperationHadel" // @leftOperationHadel="leftOperationHadel"
// :rightOperation="state.rightOperation" // :rightOperation="state.rightOperation"
// :showApiRightOperation="state.showApiRightOperation" // :showApiRightOperation="state.showApiRightOperation"
// :apiEditFormRules="state.apiEditFormRules"
</script> </script>

1
Web/src/views/logisticsPlan/supplierInvData/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// RDC
defineOptions({ name: 'supplierInvData' }) defineOptions({ name: 'supplierInvData' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierMrpDate/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierMrpDate' }) defineOptions({ name: 'supplierMrpDate' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierMrpMonth/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// M+6
defineOptions({ name: 'supplierMrpMonth' }) defineOptions({ name: 'supplierMrpMonth' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierMrpState/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// MRP
defineOptions({ name: 'supplierMrpState' }) defineOptions({ name: 'supplierMrpState' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierMrpWarning/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// MRP
defineOptions({ name: 'supplierMrpWarning' }) defineOptions({ name: 'supplierMrpWarning' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierPo/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierPo' }) defineOptions({ name: 'supplierPo' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierProHschedul/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierProHschedul' }) defineOptions({ name: 'supplierProHschedul' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierProPlaning/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// 2
defineOptions({ name: 'supplierProPlaning' }) defineOptions({ name: 'supplierProPlaning' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierProTschedul/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierProTschedul' }) defineOptions({ name: 'supplierProTschedul' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierReturn/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
// 退
defineOptions({ name: 'supplierReturn' }) defineOptions({ name: 'supplierReturn' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

1
Web/src/views/logisticsPlan/supplierSaWeek/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierSaWeek' }) defineOptions({ name: 'supplierSaWeek' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

14
Web/src/views/logisticsPlan/supplierSinvData/index.vue

@ -5,11 +5,11 @@
:searchOptions="state.searchOptions" :searchOptions="state.searchOptions"
:searchFilter="state.searchFilter" :searchFilter="state.searchFilter"
:rightOperation="state.rightOperation" :rightOperation="state.rightOperation"
:apiEditFormRules="state.apiEditFormRules"
></tablePage> ></tablePage>
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierSinvData' }) defineOptions({ name: 'supplierSinvData' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'
@ -23,17 +23,5 @@ const state = reactive({
{type:'input',prop:'supplierCode',label:'供应商代码'} {type:'input',prop:'supplierCode',label:'供应商代码'}
], ],
rightOperation:'apiUpdate', rightOperation:'apiUpdate',
apiEditFormRules:{
supplierCode: [{ required: true, message: '必填项', trigger: 'blur' }],
supplierName: [{ required: true, message: '必填项', trigger: 'blur' }],
materialCode: [{ required: true, message: '必填项', trigger: 'blur' }],
materialDescription: [{ required: true, message: '必填项', trigger: 'blur' }],
quantityCurrent: [{ required: true, message: '必填项', trigger: 'blur' }],
quantityPlan: [{ required: true, message: '必填项', trigger: 'blur' }],
inventoryStatus: [{ required: true, message: '必填项', trigger: 'blur' }],
safetyStock: [{ required: true, message: '必填项', trigger: 'blur' }],
productionCycle: [{ required: true, message: '必填项', trigger: 'blur' }],
supplierBatch: [{ required: true, message: '必填项', trigger: 'blur' }],
}
}) })
</script> </script>

27
Web/src/views/productionQuality/supplierBom/index.vue

@ -0,0 +1,27 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:apiEditFormRules="state.apiEditFormRules"
></tablePage>
</template>
<script setup>
// BOM
defineOptions({ name: 'supplierBom' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplierbom',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
})
</script>

28
Web/src/views/productionQuality/supplierEmployee/index.vue

@ -0,0 +1,28 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:searchButtons="['search','create','import','export']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierEmployee' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplieremployee',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
rightOperation:'apiUpdate,apiDelete',
})
</script>

28
Web/src/views/productionQuality/supplierInfo/index.vue

@ -0,0 +1,28 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:searchButtons="['search','create','import','export']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierInfo' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplierinfo',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
rightOperation:'apiUpdate,apiDelete',
})
</script>

28
Web/src/views/productionQuality/supplierProCps/index.vue

@ -0,0 +1,28 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:searchButtons="['search','export','custominvoke']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierProCps' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplierprocps',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
rightOperation:'apiUpdate',
})
</script>

28
Web/src/views/productionQuality/supplierProData/index.vue

@ -0,0 +1,28 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:searchButtons="['search','export','custominvoke']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierProData' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplierprodata',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
rightOperation:'apiUpdate',
})
</script>

28
Web/src/views/productionQuality/supplierProFirstPassyield/index.vue

@ -0,0 +1,28 @@
<template>
<tablePage
:columnWidth="150"
:apiName="state.apiName"
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:searchButtons="['search','export','custominvoke']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierProFirstPassyield' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
const state = reactive({
apiName:'cherysupplierprofirstpassyield',
searchFilter: {
supplierCode: null
},
searchOptions:[
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
rightOperation:'apiUpdate',
})
</script>

30
Web/src/views/productionQuality/supplierProMaterialStock/index.vue

@ -5,12 +5,12 @@
:searchOptions="state.searchOptions" :searchOptions="state.searchOptions"
:searchFilter="state.searchFilter" :searchFilter="state.searchFilter"
:rightOperation="state.rightOperation" :rightOperation="state.rightOperation"
:apiEditFormRules="state.apiEditFormRules" :searchButtons="['search','export','custominvoke']"
:searchButtons="['search','import','export','custominvoke']"
></tablePage> ></tablePage>
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierProMaterialStock' }) defineOptions({ name: 'supplierProMaterialStock' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'
@ -24,31 +24,5 @@ const state = reactive({
{type:'input',prop:'supplierCode',label:'供应商代码'} {type:'input',prop:'supplierCode',label:'供应商代码'}
], ],
rightOperation:'apiUpdate', rightOperation:'apiUpdate',
apiEditFormRules:{
supplierCode: [{ required: true, message: '必填项', trigger: 'blur' }],
supplierName: [{ required: true, message: '必填项', trigger: 'blur' }],
supplierSubCode: [{ required: true, message: '必填项', trigger: 'blur' }],
supplierSubName: [{ required: true, message: '必填项', trigger: 'blur' }],
subSupplierCode: [{ required: true, message: '必填项', trigger: 'blur' }],
subSupplierName: [{ required: true, message: '必填项', trigger: 'blur' }],
subSupplierAddress: [{ required: true, message: '必填项', trigger: 'blur' }],
subBatchNo: [{ required: true, message: '必填项', trigger: 'blur' }],
subBatchNum: [{ required: true, message: '必填项', trigger: 'blur' }],
empCode: [{ required: true, message: '必填项', trigger: 'blur' }],
empName: [{ required: true, message: '必填项', trigger: 'blur' }],
deviceCode: [{ required: true, message: '必填项', trigger: 'blur' }],
deviceName: [{ required: true, message: '必填项', trigger: 'blur' }],
featureName: [{ required: true, message: '必填项', trigger: 'blur' }],
featureUnit: [{ required: true, message: '必填项', trigger: 'blur' }],
standardValue: [{ required: true, message: '必填项', trigger: 'blur' }],
featureUpper: [{ required: true, message: '必填项', trigger: 'blur' }],
featureLower: [{ required: true, message: '必填项', trigger: 'blur' }],
featureValue: [{ required: true, message: '必填项', trigger: 'blur' }],
checkNo: [{ required: true, message: '必填项', trigger: 'blur' }],
checkResult: [{ required: true, message: '必填项', trigger: 'blur' }],
checkTime: [{ required: true, message: '必填项', trigger: 'blur' }],
vendorFieldCode: [{ required: true, message: '必填项', trigger: 'blur' }],
deadLine: [{ required: true, message: '必填项', trigger: 'blur' }],
}
}) })
</script> </script>

1
Web/src/views/productionQuality/supplierProScheduling/index.vue

@ -7,6 +7,7 @@
</template> </template>
<script setup> <script setup>
//
defineOptions({ name: 'supplierProScheduling' }) defineOptions({ name: 'supplierProScheduling' })
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue' import tablePage from '@/components/tablePage/index.vue'

Loading…
Cancel
Save