Browse Source

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

web
安虹睿 2 weeks ago
parent
commit
5f53b4be6e
  1. 21
      Web/src/api/common/index.js
  2. 54
      Web/src/components/apiEditPop/index.vue
  3. 3
      Web/src/components/elTable/index.vue
  4. 3
      Web/src/components/importPop/index.vue
  5. 113
      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) {
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) {
return request({

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

@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="dialogVisible"
title="编辑"
:title="handleType=='create' ? '新增' : '编辑'"
width="70%"
:close-on-click-modal="false"
top="10vh"
@ -12,7 +12,7 @@
v-if="!formLoading"
:model="formData"
:size="'large'"
:rules="props.formRules">
:rules="formRulesData">
<el-row :gutter="40">
<el-col
v-for="(item, index) in formConfig"
@ -83,9 +83,10 @@
</template>
<script setup lang="ts">
defineOptions({ name: 'apiEditPop' })
import { reactive, ref, onMounted } from 'vue'
import { reactive, ref, onMounted,nextTick } from 'vue'
import { ElDialog,ElMessage } from 'element-plus'
import { getCommonInfoById } from '@/api/common/index'
import apiTableColumns from '@/utils/common/apiTableColumns'
import { useRoute } from 'vue-router'
const route = useRoute()
@ -94,6 +95,8 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const formLoading = ref(false) //
const formData = ref(null)//
const formConfig = ref(null)//
const handleType = ref(null)//
const formRulesData = ref(null)
const props = defineProps({
// api
@ -119,9 +122,27 @@ const resetForm = () => {
/** 打开弹窗 */
const open = (configs,row) => {
resetForm()
dialogVisible.value = true
formConfig.value = configs
getFormData(row.uId)
getFormRules()
nextTick(() => {
dialogVisible.value = true
formConfig.value = configs
//
if(row){
handleType.value='edit'
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 })
//
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) => {
formLoading.value = true
@ -152,6 +187,11 @@ const getFormData = async (uId) => {
formData.value = res.data
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 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">
<el-button
v-for="(btn,index) in props.rightOperation"
v-show="typeof btn.hide == 'function' ? !btn.hide(scope.row,scope) : !btn.hide"
:key="index"
:type="btn.type"
:link="btn.link"
@ -114,7 +115,7 @@
//
rightOperationColumnWidth:{
type: Number,
default: 120
default: 150
},
// table
tableData: {

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

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

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

@ -111,7 +111,9 @@
getCommonPaged,
getCommonDeatailPaged,
postCommonExport,
postCommonCreate,
putCommonUpdate,
deleteCommonApi,
getCommonCustominvoke
} from '@/api/common/index'
import { ElMessageBox, ElMessage,ElTable, ElTableColumn } from 'element-plus'
@ -133,6 +135,7 @@
loading:false,
searchBtnOptions:{
search:{icon:'Search',auth:':page',label:'查询',type:null},
create:{icon:'Plus',auth:':create',label:'新增',type:'primary'},
import:{icon:'BottomRight',auth:':import',label:'导入',type:'warning'},
export:{icon:'TopRight',auth:':export',label:'导出',type:'success'},
custominvoke:{icon:'Position',auth:':custominvoke',label:'手动传出',type:'primary'},
@ -187,6 +190,16 @@
type: Object,
default: null
},
// writeState=true
// readState使,
// =
apiRightHideConfig:{
type: Object,
default: {
apiUpdate:{prop:'writeState',ruleValue:true},
apiDelete:{prop:'writeState',ruleValue:true},
}
},
// table
tableColumns: {
type: Object,
@ -266,11 +279,19 @@
let _apiArr = props.showApiRightOperation || props.rightOperation.split(',')
let _config = {
apiUpdate:{label:'编辑',type:'warning'},
apiDelete:{label:'删除',type:'danger'},
}
let _btns = []
if(_apiArr && _apiArr.length > 0){
_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
@ -290,36 +311,70 @@
let _list = _tableColums.filter(item => !item.noEdit)
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)
}
// todo:putCommonUpdate
const submitEditForm = async (formData,formConfig) => {
//
const submitEditForm = async (type,formData,formConfig) => {
apiEditPopRef.value.validate((valid) => {
if(valid){
//
if(
(formData.hasOwnProperty('updateByUser') && formData.hasOwnProperty('updateTime'))
|| (formData.hasOwnProperty('updateUser') && formData.hasOwnProperty('updateTime'))
){
if(formData.hasOwnProperty('updateByUser')){formData.updateByUser = userInfo.realName}
if(formData.hasOwnProperty('updateUser')){formData.updateUser = userInfo.realName}
if(formData.hasOwnProperty('updateTime')){formData.updateTime = formatDate(new Date(), "YYYY-mm-dd HH:MM:SS")}
//
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{
//
let _notChange=['taskconifgure']
if(_notChange.indexOf(props.apiName) < 0){
formData.remark= `修改信息:${userInfo.realName} ${formatDate(new Date(), "YYYY-mm-dd HH:MM:SS")}`
//
if(
(formData.hasOwnProperty('updateByUser') && formData.hasOwnProperty('updateTime'))
|| (formData.hasOwnProperty('updateUser') && formData.hasOwnProperty('updateTime'))
){
if(formData.hasOwnProperty('updateByUser')){formData.updateByUser = userInfo.realName}
if(formData.hasOwnProperty('updateUser')){formData.updateUser = userInfo.realName}
if(formData.hasOwnProperty('updateTime')){formData.updateTime = formatDate(new Date(), "YYYY-mm-dd HH:MM:SS")}
}else{
//
let _notChange=['taskconifgure']
if(_notChange.indexOf(props.apiName) < 0){
formData.remark= `修改信息:${userInfo.realName} ${formatDate(new Date(), "YYYY-mm-dd HH:MM:SS")}`
}
}
apiEditPopRef.value.changeLoading(true)
putCommonUpdate(props.apiName,formData)
.then(res=>{
apiEditPopRef.value.close()
ElMessage.success('操作成功!')
getTableData(1);
})
.catch(err=>{ElMessage.error('操作失败!')})
.finally(()=>{apiEditPopRef.value.changeLoading(false)})
}
apiEditPopRef.value.changeLoading(true)
putCommonUpdate(props.apiName,formData)
.then(res=>{
apiEditPopRef.value.close()
ElMessage.success('操作成功!')
getTableData(1);
})
.finally(()=>{apiEditPopRef.value.changeLoading(false)})
}
})
}
@ -393,6 +448,7 @@
state.tableData = resp.data.data
state.pager.total = resp.data.totalCount
})
.catch(err=>{ElMessage.error('数据获取失败!')})
.finally(() => (state.loading = false))
}else{
state.loading = true
@ -403,6 +459,7 @@
state.tableData = resp.data.data
state.pager.total = resp.data.totalCount
})
.catch(err=>{ElMessage.error('数据获取失败!')})
.finally(() => (state.loading = false))
}
}
@ -415,6 +472,12 @@
if(btn == 'search'){
getTableData()
}
//
else if (btn == 'create'){
let _tableColums = getTableColumns()
let _list = _tableColums.filter(item => !item.noEdit)
apiEditPopRef.value.open(_list)
}
//
else if (btn == 'import'){
importPopRef.value.open()
@ -427,6 +490,7 @@
.then((res) => {
downloadByData(res.data,route.meta.title+'.xlsx')
})
.catch(err=>{ElMessage.error('操作失败!')})
.finally(() => (state.loading = false))
}
//
@ -446,6 +510,7 @@
ElMessage.success('操作成功!')
getTableData(1)//
})
.catch(err=>{ElMessage.error('操作失败!')})
.finally(() => (state.loading = false))
})
}
@ -503,4 +568,4 @@
onMounted(() => {
getTableData()
})
</script>
</script>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -5,11 +5,11 @@
:searchOptions="state.searchOptions"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:apiEditFormRules="state.apiEditFormRules"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierSinvData' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
@ -23,17 +23,5 @@ const state = reactive({
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
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>

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"
:searchFilter="state.searchFilter"
:rightOperation="state.rightOperation"
:apiEditFormRules="state.apiEditFormRules"
:searchButtons="['search','import','export','custominvoke']"
:searchButtons="['search','export','custominvoke']"
></tablePage>
</template>
<script setup>
//
defineOptions({ name: 'supplierProMaterialStock' })
import { reactive, ref, onMounted } from 'vue'
import tablePage from '@/components/tablePage/index.vue'
@ -24,31 +24,5 @@ const state = reactive({
{type:'input',prop:'supplierCode',label:'供应商代码'}
],
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>

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

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

Loading…
Cancel
Save