Commit cf8d315d authored by 前端-许冠华's avatar 前端-许冠华

Merge branch 'v2-220618' into 'v2-220618'

feat: 完善质检单管理/协同权限和翻译 See merge request linkseeks-design/pro-platform!1088
parents d9127f28 424e43df
......@@ -45,6 +45,7 @@ import supplier from './en-US/supplier'
import eightD from './en-US/eightD'
import customerAbility from './en-US/customerAbility'
import quality from './en-US/quality'
export default {
'global.siteName': '',
...common,
......@@ -93,4 +94,5 @@ export default {
...supplier,
...eightD,
...customerAbility,
...quality,
}
export default {
'quality.zhijiandanhao': 'Quality inspection order number',
'quality.zhijiandanzhaiyao': 'Summary of quality inspection list',
'quality.zhijiankaishiriqi': 'Quality inspection start date',
'quality.zhijianjieshuriqi': 'End date of quality inspection',
'quality.zhijianleixing': 'Type of quality inspection',
'quality.laiyuanshouhuodanhao': 'Source receipt number',
'quality.gongyingshang': 'Supplier',
'quality.caigoushang': 'Purchaser',
'quality.danjushijian': 'Document time',
'quality.neibuzhuangtai': 'Internal state',
'quality.caozuo': 'Operation',
'quality.mianjian': 'Exempt from inspection',
'quality.quanjian': 'Full inspection',
'quality.choujian': 'Spot check',
'quality.bukeshanchujianyanxiang': 'Can not be deleted, the inspection project is using grouping!',
'quality.buliangyuanyin': 'Undesirable causes',
'quality.qingshurubuliangyuanyin': 'Please enter the bad reason',
'quality.buliangshuoming': 'Bad description',
'quality.qingshurubuliangshuoming': 'Please enter a bad description',
'quality.celiangzhi': 'Measured value',
'quality.shuzixingzuichangbaoliu': 'Numeric type, up to 3 decimal places',
'quality.buliangshuliang': 'Bad quantity',
'quality.qingshurubuliangshuliang': 'Please enter a bad quantity',
'quality.yaoqiudayu0qiexiaoyu': 'It is required to be greater than 0 and less than or equal to the quantity submitted for inspection, with a maximum of 3 decimal places.',
'quality.shouhuopanding': 'Receiving judgment',
'quality.qingxuanzeshouhuopanding': 'Please select the receipt decision.',
'quality.rangbujieshou': 'Concession acceptance',
'quality.jushou': 'Refuse to accept',
'quality.tuihuoleixing': 'Return type',
'quality.qingxuanzetuihuoleixing': 'Please select the return type',
'quality.tuikou': 'Return buckle',
'quality.tuibu': 'Return and supplement',
'quality.chulifangshi': 'Treatment mode',
'quality.weixiu': 'Maintenance and repair',
'quality.jiudiweixiu': 'On-site maintenance',
'quality.fangong': 'Rework',
'quality.baofei': 'Scrap',
'quality.beizhu': 'Remarks',
'quality.shifoushanchu': 'Whether to delete or not!',
'quality.shi': 'Yes',
'quality.fou': 'No',
'quality.shanchu': 'Delete',
'quality.fenzu': 'Grouping',
'quality.qingxuanzefenzu': 'Please select a grouping',
'quality.shuruxinxuanxiang': 'Enter new option',
'quality.xinzeng': 'Add',
'quality.jianyanxiangmu': 'Inspection item',
'quality.qingshurujianyanxiangmu': 'Please enter the inspection item',
'quality.hegefanwei': 'Qualified range',
'quality.qingshuru': 'Please enter',
'quality.jianyanshuoming': 'Inspection instructions',
'quality.jiancezhi': 'Detected value',
'quality.qingshurujiancezhi': 'Please enter the detection value',
'quality.jianyanpanduan': 'Inspection and judgment',
'quality.hege': 'Qualified',
'quality.buhege': 'Unqualified',
'quality.quxiao': 'cancel',
'quality.tijiao': 'Submit',
'quality.jianyanjilu': 'Inspection record',
'quality.zhijiandanbianhao': 'Quality inspection list number',
'quality.gongyingshangmingcheng': 'Supplier name',
'quality.jianyanfangshi': 'Inspection mode',
'quality.qingxuanzejianyanfangshi': 'Please select the inspection method',
'quality.zanwushuju': 'No data available for the time being',
'quality.songjianshuliang': 'Quantity submitted for inspection',
'quality.qingshurusongjianshuliang': 'Please enter the quantity submitted for inspection',
'quality.shuzixingzuiduobaoliu': 'Numeric type, keeping up to 3 decimal places, greater than 0',
'quality.chouyangshuliang': 'Sampling quantity',
'quality.rangbujieshoushuliang': 'Concession acceptance quantity',
'quality.keweikonghuowei0qieyao': 'Can be empty or 0, and the requirement is less than or equal to the quantity received, with a maximum of 3 decimal places',
'quality.picipanding': 'Batch decision',
'quality.qingxuanzepicipanding': 'Please select a batch decision',
'quality.bufenhege': 'Partially qualified',
'quality.yunshoushuliang': 'Allowable quantity',
'quality.jushoushuliang': 'Rejected quantity',
'quality.qingtianjiabuliangjilu': 'Please add a bad record',
'quality.buliangjilu': 'Bad record',
'quality.tianjiabuliangjilu': 'Add bad record',
'quality.qingtianjiajianyanxiangmu': 'Please add inspection items',
'quality.tianjiajianyanxiangmu': 'Add inspection item',
'quality.liuzhuanjilu': 'Circulation record',
'quality.fujian': 'Attachment',
'quality.zhijianwuliao': 'Quality inspection materials',
'quality.zhijianshangpin': 'Quality inspection commodity',
'quality.jibenxinxi': 'Basic information',
'quality.dingdanleixingbutongwu': 'Unable to generate after-sales order due to different order type!',
'quality.piliangshengchengshouhoudan': 'Generate after-sales orders in batches',
'quality.caozuoshijian': 'Operating time',
'quality.zhuangtai': 'Status',
'quality.zhiwei': 'Position',
'quality.bumen': 'Department',
'quality.caozuoren': 'Operator',
'quality.xuhao': 'Serial number',
'quality.shengchengshouhoudan': 'Generate after-sales order',
'quality.zhakanshouhoudan': 'Check the after-sales order',
'quality.shouhoudanhao': 'After-sales order number',
'quality.shouhouzhuangtai': 'After-sales status',
'quality.shouhuoshuliang': 'Received quantity',
'quality.dingdanhao': 'Order number',
'quality.danwei': 'Unit',
'quality.pinpai': 'Brand',
'quality.pinlei': 'Category',
'quality.shangpinmingcheng': 'Product Name',
'quality.shangpinID': 'Commodity ID',
'quality.guigexinghao': 'Specification and model',
'quality.wuliaomingcheng': 'Item name',
'quality.wuliaobianhao': 'Item number',
'quality.shifouyizhijianwancheng': 'Has the quality inspection been completed? The submission means that the quality inspection is completed, and the quality inspection list completed by the quality inspection is not allowed to be modified.',
'quality.xiugai': 'Modify',
'quality.shifoushanchudangqianzhijian': 'Whether to delete the current quality inspection list?',
'quality.gengduo': 'More',
'quality.baocun': 'Save',
'quality.ninhaiyouweibaocundenei': 'You still have unsaved content. Are you sure you want to leave?',
'quality.qingshuruzhijiandanzhaiyao': 'Please enter a summary of the quality inspection list',
'quality.lailiaozhijian': 'Incoming material quality inspection',
'quality.yangpinzhijian': 'Sample quality inspection',
'quality.shizhipinzhijian': 'Quality inspection of test products',
'quality.gongyinghuiyuan': 'Supply members',
'quality.gongyingshanghuiyuanId': 'Supplier member Id',
'quality.gongyingshanghuiyuanjueseId': 'Supplier membership role Id',
'quality.zhijianriqi': 'Quality inspection date',
'quality.qingxuanze': 'Please select',
'quality.zhijianren': 'Quality inspector',
'quality.zuichang20gehanzi': 'Up to 20 Chinese characters',
'quality.zuichang150gehanzi': 'Up to 150 Chinese characters',
'quality.shouhuodanhao': 'Receiving order number',
'quality.xuanzegongyingshang': 'Select supplier',
'quality.huiyuanmingcheng': 'Member name',
'quality.qingxuanzegongyinghuiyuan': 'Please choose to supply members',
'quality.jianyan': 'Inspection',
'quality.qingtianjiazhijianwuliao': 'Please add quality inspection materials',
'quality.xuanzezhijianwuliao': 'Select quality inspection materials',
'quality.xuanzewuliao': 'Select material',
'quality.wuliaozu': 'Material group',
'quality.chaxun': 'Query',
'quality.shouhouchuli': 'After-sales treatment',
'quality.zhijiankaishishijian': 'Starting time of quality inspection',
'quality.zhijianjieshushijian': 'End time of quality inspection',
'quality.zhijianzhong': 'Quality inspection is under way',
'quality.zhijianwancheng': 'Quality inspection completed',
'quality.yishengchengshouhoudan': 'Generated after-sales order',
'quality.huiyuanID': 'Member ID',
'quality.huiyuanleixing': 'Member type',
'quality.huiyuanjuese': 'Member role',
'quality.huiyuandengji': 'Membership level',
'quality.zhijianjieshuriqidayu': 'The end date of quality inspection is greater than or equal to the start date of quality inspection.',
'quality.qingtianjiazhijianshangpin': 'Please add quality inspection goods',
'quality.xuanzezhijianshangpin': 'Select quality inspection goods',
'quality.xuanzeshangpin': 'Choose a commodity',
'quality.waibuzhuangtai': 'External state',
}
......@@ -45,6 +45,7 @@ import eightD from './ko-KR/eightD'
import supplier from './ko-KR/supplier';
import customerAbility from './ko-KR/customerAbility';
import quality from './ko-KR/quality'
export default {
'global.siteName': '',
...common,
......@@ -93,4 +94,5 @@ export default {
...supplier,
...eightD,
...customerAbility,
...quality,
}
export default {
'quality.zhijiandanhao': '품질 검사서 번호',
'quality.zhijiandanzhaiyao': '품질 검사서 요약',
'quality.zhijiankaishiriqi': '품질 검사 시작 날짜',
'quality.zhijianjieshuriqi': '품질 검사 종료 날짜',
'quality.zhijianleixing': '품질 검사 유형',
'quality.laiyuanshouhuodanhao': '출처 납품처 번호',
'quality.gongyingshang': '공급업체',
'quality.caigoushang': '구매업자',
'quality.danjushijian': '문서 시간',
'quality.neibuzhuangtai': '내부 상태',
'quality.caozuo': '조작',
'quality.mianjian': '검사 면제',
'quality.quanjian': '전체 검사',
'quality.choujian': '검사하다.',
'quality.bukeshanchujianyanxiang': '삭제할 수 없습니다. 검사 항목이 그룹화를 사용하고 있습니다!',
'quality.buliangyuanyin': '불량 원인',
'quality.qingshurubuliangyuanyin': '잘못된 원인을 입력하십시오.',
'quality.buliangshuoming': '잘못된 설명',
'quality.qingshurubuliangshuoming': '잘못된 설명을 입력하십시오.',
'quality.celiangzhi': '측정 값',
'quality.shuzixingzuichangbaoliu': '숫자형, 최대 3자리 소수 유지',
'quality.buliangshuliang': '불량 수량',
'quality.qingshurubuliangshuliang': '잘못된 수량을 입력하십시오.',
'quality.yaoqiudayu0qiexiaoyu': '0보다 크고 검사 수량보다 작거나 같아야 하며 최대 3자리의 소수를 유지합니다.',
'quality.shouhuopanding': '납품처 판정',
'quality.qingxuanzeshouhuopanding': '납품처 판정을 선택하십시오.',
'quality.rangbujieshou': '양보수신',
'quality.jushou': '거절하다.',
'quality.tuihuoleixing': '반품 유형',
'quality.qingxuanzetuihuoleixing': '반품 유형을 선택하십시오.',
'quality.tuikou': '물리다',
'quality.tuibu': '퇴보',
'quality.chulifangshi': '처리 방법',
'quality.weixiu': '수리',
'quality.jiudiweixiu': '부지수리',
'quality.fangong': '재작업',
'quality.baofei': '소각',
'quality.beizhu': '주석',
'quality.shifoushanchu': '삭제하시겠습니까?',
'quality.shi': '예',
'quality.fou': '아니오',
'quality.shanchu': '삭제',
'quality.fenzu': '조를 나누다',
'quality.qingxuanzefenzu': '그룹화를 선택하십시오.',
'quality.shuruxinxuanxiang': '새 옵션 입력',
'quality.xinzeng': '신규',
'quality.jianyanxiangmu': '검사 항목',
'quality.qingshurujianyanxiangmu': '검사 항목을 입력하십시오.',
'quality.hegefanwei': '적격 범위',
'quality.qingshuru': '입력하십시오.',
'quality.jianyanshuoming': '검사 설명',
'quality.jiancezhi': '체크 값',
'quality.qingshurujiancezhi': '탐지 값을 입력하십시오.',
'quality.jianyanpanduan': '판단을 검증하다',
'quality.hege': '합격',
'quality.buhege': '불합격',
'quality.quxiao': '취소',
'quality.tijiao': '제출',
'quality.jianyanjilu': '검사 레코드',
'quality.zhijiandanbianhao': '품질 검사서 번호',
'quality.gongyingshangmingcheng': '공급자명',
'quality.jianyanfangshi': '검사 방법',
'quality.qingxuanzejianyanfangshi': '검사 방법을 선택하십시오.',
'quality.zanwushuju': '데이터 없음',
'quality.songjianshuliang': '검사 수량',
'quality.qingshurusongjianshuliang': '검사 수량을 입력하십시오.',
'quality.shuzixingzuiduobaoliu': '숫자형, 최대 3자리 소수 유지, 0보다 커',
'quality.chouyangshuliang': '샘플 수량',
'quality.rangbujieshoushuliang': '입고 수량 양보',
'quality.keweikonghuowei0qieyao': '이거나 0일 수 있으며 납품처 수량보다 작거나 같아야 하며 소수점 이하 자릿수를 3자리까지 유지할 수 있습니다.',
'quality.picipanding': '로트 판정',
'quality.qingxuanzepicipanding': '로트 판정을 선택하십시오.',
'quality.bufenhege': '부분적합',
'quality.yunshoushuliang': '허용 수량',
'quality.jushoushuliang': '불합격 수량',
'quality.qingtianjiabuliangjilu': '불량 레코드를 추가하십시오.',
'quality.buliangjilu': '불량 기록',
'quality.tianjiabuliangjilu': '불량 레코드 추가',
'quality.qingtianjiajianyanxiangmu': '검사 항목을 추가하십시오.',
'quality.tianjiajianyanxiangmu': '검사 항목 추가',
'quality.liuzhuanjilu': '유턴 레코드',
'quality.fujian': '액세서리',
'quality.zhijianwuliao': '품질 검사 품목',
'quality.zhijianshangpin': '품질 검사 상품.',
'quality.jibenxinxi': '기본 정보',
'quality.dingdanleixingbutongwu': '주문 유형이 달라서 애프터 주문을 생성할 수 없습니다!',
'quality.piliangshengchengshouhoudan': '대량 판매 후 주문 생성',
'quality.caozuoshijian': '작업 시간',
'quality.zhuangtai': '상태',
'quality.zhiwei': '직위',
'quality.bumen': '부문',
'quality.caozuoren': '운영자',
'quality.xuhao': '시퀀스 번호',
'quality.shengchengshouhoudan': '판매 후 주문 생성',
'quality.zhakanshouhoudan': '판매 후 주문 조회',
'quality.shouhoudanhao': '판매 후 주문 번호',
'quality.shouhouzhuangtai': '판매 후 상태',
'quality.shouhuoshuliang': '납품처 수량',
'quality.dingdanhao': '주문 번호',
'quality.danwei': '단위',
'quality.pinpai': '브랜드',
'quality.pinlei': '품목',
'quality.shangpinmingcheng': '상품명',
'quality.shangpinID': '상품 ID',
'quality.guigexinghao': '사양 모델',
'quality.wuliaomingcheng': '품목명',
'quality.wuliaobianhao': '품목 번호',
'quality.shifouyizhijianwancheng': '품질 검사가 완료되었습니까? 제출은 품질 검사가 완료되었음을 나타내며, 품질 검사가 완료된 품질 검사장에는 수정이 허용되지 않습니다.',
'quality.xiugai': '수정',
'quality.shifoushanchudangqianzhijian': '현재 품질 검사서 삭제 여부?',
'quality.gengduo': '추가',
'quality.baocun': '저장',
'quality.ninhaiyouweibaocundenei': '아직 저장하지 않은 내용이 있습니다. 떠나실 것 같습니까??',
'quality.qingshuruzhijiandanzhaiyao': '품질 검사서 요약을 입력하십시오.',
'quality.lailiaozhijian': '품질검사를 실시하다.',
'quality.yangpinzhijian': '검체 품질 검사',
'quality.shizhipinzhijian': '품질 검사를 시험 제작하다.',
'quality.gongyinghuiyuan': '공급 회원.',
'quality.gongyingshanghuiyuanId': '공급업체 회원 ID',
'quality.gongyingshanghuiyuanjueseId': '공급업체 회원 역할 ID',
'quality.zhijianriqi': '품질 검사 날짜',
'quality.qingxuanze': '선택하십시오.',
'quality.zhijianren': '품질 검사인',
'quality.zuichang20gehanzi': '최장 20자의 한자',
'quality.zuichang150gehanzi': '최장 150자의 한자',
'quality.shouhuodanhao': '수취증 번호',
'quality.xuanzegongyingshang': '공급자 선택',
'quality.huiyuanmingcheng': '회원명',
'quality.qingxuanzegongyinghuiyuan': '공급회원을 골라주세요',
'quality.jianyan': '검사',
'quality.qingtianjiazhijianwuliao': '품질 검사 품목을 추가하십시오.',
'quality.xuanzezhijianwuliao': '품질 검사 품목 선택',
'quality.xuanzewuliao': '품목 선택',
'quality.wuliaozu': '품목 그룹',
'quality.chaxun': '조회',
'quality.shouhouchuli': '판매 후 처리',
'quality.zhijiankaishishijian': '품질 검사 시작 시간',
'quality.zhijianjieshushijian': '품질 검사 종료 시간',
'quality.zhijianzhong': '품질 검사 중',
'quality.zhijianwancheng': '품질 검사가 완료되다',
'quality.yishengchengshouhoudan': '판매 후 주문 생성됨',
'quality.huiyuanID': '회원 ID',
'quality.huiyuanleixing': '회원 유형',
'quality.huiyuanjuese': '회원의 역할',
'quality.huiyuandengji': '회원 등급',
'quality.zhijianjieshuriqidayu': '품질 검사 종료 날짜가 품질 검사 시작 날짜보다 크거나 같음',
'quality.qingtianjiazhijianshangpin': '품질검사 상품을 추가해 주세요',
'quality.xuanzezhijianshangpin': '품질 검사 상품을 고르다.',
'quality.xuanzeshangpin': '상품 선택',
'quality.waibuzhuangtai': '외부 상태',
}
......@@ -42,6 +42,7 @@ import agentOrder from './zh-CN/agentOrder'
import material from './zh-CN/material'
import eightD from './zh-CN/eightD'
import customerAbility from './zh-CN/customerAbility'
import quality from './zh-CN/quality'
import salesPerformanceStatistics from './zh-CN/salesPerformanceStatistics'
import supplier from './zh-CN/supplier';
......@@ -93,4 +94,5 @@ export default {
...eightD,
...supplier,
...customerAbility,
...quality,
}
export default {
'quality.zhijiandanhao': '质检单号',
'quality.zhijiandanzhaiyao': '质检单摘要',
'quality.zhijiankaishiriqi': '质检开始日期',
'quality.zhijianjieshuriqi': '质检结束日期',
'quality.zhijianleixing': '质检类型',
'quality.laiyuanshouhuodanhao': '来源收货单号',
'quality.gongyingshang': '供应商',
'quality.caigoushang': '采购商',
'quality.danjushijian': '单据时间',
'quality.neibuzhuangtai': '内部状态',
'quality.caozuo': '操作',
'quality.mianjian': '免检',
'quality.quanjian': '全检',
'quality.choujian': '抽检',
'quality.bukeshanchujianyanxiang': '不可删除,检验项目正在使用分组!',
'quality.buliangyuanyin': '不良原因',
'quality.qingshurubuliangyuanyin': '请输入不良原因',
'quality.buliangshuoming': '不良说明',
'quality.qingshurubuliangshuoming': '请输入不良说明',
'quality.celiangzhi': '测量值',
'quality.shuzixingzuichangbaoliu': '数字型,最长保留3位小数',
'quality.buliangshuliang': '不良数量',
'quality.qingshurubuliangshuliang': '请输入不良数量',
'quality.yaoqiudayu0qiexiaoyu': '要求大于0且小于或等于送检数量,最多保留3位小数',
'quality.shouhuopanding': '收货判定',
'quality.qingxuanzeshouhuopanding': '请选择收货判定',
'quality.rangbujieshou': '让步接收',
'quality.jushou': '拒收',
'quality.tuihuoleixing': '退货类型',
'quality.qingxuanzetuihuoleixing': '请选择退货类型',
'quality.tuikou': '退扣',
'quality.tuibu': '退补',
'quality.chulifangshi': '处理方式',
'quality.weixiu': '维修',
'quality.jiudiweixiu': '就地维修',
'quality.fangong': '返工',
'quality.baofei': '报废',
'quality.beizhu': '备注',
'quality.shifoushanchu': '是否删除!',
'quality.shi': '是',
'quality.fou': '否',
'quality.shanchu': '删除',
'quality.fenzu': '分组',
'quality.qingxuanzefenzu': '请选择分组',
'quality.shuruxinxuanxiang': '输入新选项',
'quality.xinzeng': '新增',
'quality.jianyanxiangmu': '检验项目',
'quality.qingshurujianyanxiangmu': '请输入检验项目',
'quality.hegefanwei': '合格范围',
'quality.qingshuru': '请输入',
'quality.jianyanshuoming': '检验说明',
'quality.jiancezhi': '检测值',
'quality.qingshurujiancezhi': '请输入检测值',
'quality.jianyanpanduan': '检验判断',
'quality.hege': '合格',
'quality.buhege': '不合格',
'quality.quxiao': '取消',
'quality.tijiao': '提交',
'quality.jianyanjilu': '检验记录',
'quality.zhijiandanbianhao': '质检单编号',
'quality.gongyingshangmingcheng': '供应商名称',
'quality.jianyanfangshi': '检验方式',
'quality.qingxuanzejianyanfangshi': '请选择检验方式',
'quality.zanwushuju': '暂无数据',
'quality.songjianshuliang': '送检数量',
'quality.qingshurusongjianshuliang': '请输入送检数量',
'quality.shuzixingzuiduobaoliu': '数字型,最多保留3位小数,大于0',
'quality.chouyangshuliang': '抽样数量',
'quality.rangbujieshoushuliang': '让步接收数量',
'quality.keweikonghuowei0qieyao': '可为空或为0,且要求小于或等于收货数量,最多保留3位小数',
'quality.picipanding': '批次判定',
'quality.qingxuanzepicipanding': '请选择批次判定',
'quality.bufenhege': '部分合格',
'quality.yunshoushuliang': '允收数量',
'quality.jushoushuliang': '拒收数量',
'quality.qingtianjiabuliangjilu': '请添加不良记录',
'quality.buliangjilu': '不良记录',
'quality.tianjiabuliangjilu': '添加不良记录',
'quality.qingtianjiajianyanxiangmu': '请添加检验项目',
'quality.tianjiajianyanxiangmu': '添加检验项目',
'quality.liuzhuanjilu': '流转记录',
'quality.fujian': '附件',
'quality.zhijianwuliao': '质检物料',
'quality.zhijianshangpin': '质检商品',
'quality.jibenxinxi': '基本信息',
'quality.dingdanleixingbutongwu': '订单类型不同,无法生成售后单!',
'quality.piliangshengchengshouhoudan': '批量生成售后单',
'quality.caozuoshijian': '操作时间',
'quality.zhuangtai': '状态',
'quality.zhiwei': '职位',
'quality.bumen': '部门',
'quality.caozuoren': '操作人',
'quality.xuhao': '序号',
'quality.shengchengshouhoudan': '生成售后单',
'quality.zhakanshouhoudan': '查看售后单',
'quality.shouhoudanhao': '售后单号',
'quality.shouhouzhuangtai': '售后状态',
'quality.shouhuoshuliang': '收货数量',
'quality.dingdanhao': '订单号',
'quality.danwei': '单位',
'quality.pinpai': '品牌',
'quality.pinlei': '品类',
'quality.shangpinmingcheng': '商品名称',
'quality.shangpinID': '商品 ID',
'quality.guigexinghao': '规格型号',
'quality.wuliaomingcheng': '物料名称',
'quality.wuliaobianhao': '物料编号',
'quality.shifouyizhijianwancheng': '是否已质检完成?提交则表示质检完成,质检完成的质检单不允许修改。',
'quality.xiugai': '修改',
'quality.shifoushanchudangqianzhijian': '是否删除当前质检单?',
'quality.gengduo': '更多',
'quality.baocun': '保存',
'quality.ninhaiyouweibaocundenei': '您还有未保存的内容,是否确定要离开?',
'quality.qingshuruzhijiandanzhaiyao': '请输入质检单摘要',
'quality.lailiaozhijian': '来料质检',
'quality.yangpinzhijian': '样品质检',
'quality.shizhipinzhijian': '试制品质检',
'quality.gongyinghuiyuan': '供应会员',
'quality.gongyingshanghuiyuanId': '供应商会员Id',
'quality.gongyingshanghuiyuanjueseId': '供应商会员角色Id',
'quality.zhijianriqi': '质检日期',
'quality.qingxuanze': '请选择',
'quality.zhijianren': '质检人',
'quality.zuichang20gehanzi': '最长20个汉字',
'quality.zuichang150gehanzi': '最长150个汉字',
'quality.shouhuodanhao': '收货单号',
'quality.xuanzegongyingshang': '选择供应商',
'quality.huiyuanmingcheng': '会员名称',
'quality.qingxuanzegongyinghuiyuan': '请选择供应会员',
'quality.jianyan': '检验',
'quality.qingtianjiazhijianwuliao': '请添加质检物料',
'quality.xuanzezhijianwuliao': '选择质检物料',
'quality.xuanzewuliao': '选择物料',
'quality.wuliaozu': '物料组',
'quality.chaxun': '查询',
'quality.shouhouchuli': '售后处理',
'quality.zhijiankaishishijian': '质检开始时间',
'quality.zhijianjieshushijian': '质检结束时间',
'quality.zhijianzhong': '质检中',
'quality.zhijianwancheng': '质检完成',
'quality.yishengchengshouhoudan': '已生成售后单',
'quality.huiyuanID': '会员ID',
'quality.huiyuanleixing': '会员类型',
'quality.huiyuanjuese': '会员角色',
'quality.huiyuandengji': '会员等级',
'quality.zhijianjieshuriqidayu': '质检结束日期大于或等于质检开始日期',
'quality.qingtianjiazhijianshangpin': '请添加质检商品',
'quality.xuanzezhijianshangpin': '选择质检商品',
'quality.xuanzeshangpin': '选择商品',
'quality.waibuzhuangtai': '外部状态',
}
......@@ -27,7 +27,6 @@ import {
EXCHANGE_INNER_STATUS_BADGE_MAP,
} from '../../../../constants';
import { isMaterialOrder } from '../../../../utils';
import { getCookie, removeCookie } from '@/utils/cookie';
const addSchemaAction = createFormActions();
const {
......@@ -194,7 +193,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
const [submitLoading, setSubmitLoading] = useState(false);
const [visibleGoodsDrawer, setVisibleGoodsDrawer] = useState(false);
const [orderTypeValue, setOrderTypeValue] = useState(0);
const GENERATE_QUALITY_AFTERSALE = getCookie('GENERATE_QUALITY_AFTERSALE');
const GENERATE_QUALITY_AFTERSALE = JSON.parse(localStorage.getItem('GENERATE_QUALITY_AFTERSALE'));
const isPointsOrder = orderTypeValue === ORDER_TYPE2_POINTS || orderTypeValue === ORDER_TYPE2_CHANNEL_POINTS;
const isMateriel = isMaterialOrder(orderTypeValue);
......@@ -686,7 +685,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
setUnsaved(false);
setTimeout(() => {
if (GENERATE_QUALITY_AFTERSALE) {
removeCookie('GENERATE_QUALITY_AFTERSALE')
localStorage.removeItem('GENERATE_QUALITY_AFTERSALE')
}
history.goBack();
}, 800);
......
......@@ -24,7 +24,6 @@ import {
REPAIR_INNER_STATUS_BADGE_MAP,
} from '../../../../constants';
import { isMaterialOrder } from '../../../../utils';
import { getCookie, removeCookie } from '@/utils/cookie';
/** 质检单 */
const ZHIJIANDAN = 1
......@@ -126,7 +125,7 @@ const RepairForm: React.FC<BillsFormProps> = ({
const [submitLoading, setSubmitLoading] = useState(false);
const [visibleDrawer, setVisibleDrawer] = useState(false);
const [orderTypeValue, setOrderTypeValue] = useState(0);
const GENERATE_QUALITY_AFTERSALE = getCookie('GENERATE_QUALITY_AFTERSALE');
const GENERATE_QUALITY_AFTERSALE = JSON.parse(localStorage.getItem('GENERATE_QUALITY_AFTERSALE'));
const isMateriel = isMaterialOrder(orderTypeValue);
const intl = useIntl();
......@@ -409,6 +408,7 @@ const RepairForm: React.FC<BillsFormProps> = ({
// 质检单生成售后
const getQualityOrderProduct = () => {
console.log(GENERATE_QUALITY_AFTERSALE, 'GENERATE_QUALITY_AFTERSALE')
if (outerOrderType && !id) {
const {
qualityOrderProductVOS,
......@@ -557,7 +557,7 @@ const RepairForm: React.FC<BillsFormProps> = ({
setUnsaved(false);
setTimeout(() => {
if (GENERATE_QUALITY_AFTERSALE) {
removeCookie('GENERATE_QUALITY_AFTERSALE')
localStorage.removeItem('GENERATE_QUALITY_AFTERSALE')
}
history.goBack();
}, 800);
......
......@@ -25,7 +25,6 @@ import {
RETURN_INNER_STATUS_BADGE_MAP,
} from '../../../../constants';
import { isMaterialOrder } from '../../../../utils';
import { getCookie, removeCookie } from '@/utils/cookie';
const addSchemaAction = createFormActions();
const {
......@@ -197,7 +196,7 @@ const ReturnForm: React.FC<BillsFormProps> = ({
const [visibleReturnInfoDrawer, setVisibleReturnInfoDrawer] = useState(false);
const [goodsValue, setGoodsValue] = useState([]);
const [orderTypeValue, setOrderTypeValue] = useState(0);
const GENERATE_QUALITY_AFTERSALE = getCookie('GENERATE_QUALITY_AFTERSALE');
const GENERATE_QUALITY_AFTERSALE = JSON.parse(localStorage.getItem('GENERATE_QUALITY_AFTERSALE'));
const isMateriel = isMaterialOrder(orderTypeValue);
const intl = useIntl();
......@@ -701,7 +700,7 @@ const ReturnForm: React.FC<BillsFormProps> = ({
setUnsaved(false);
setTimeout(() => {
if (GENERATE_QUALITY_AFTERSALE) {
removeCookie('GENERATE_QUALITY_AFTERSALE')
localStorage.removeItem('GENERATE_QUALITY_AFTERSALE')
}
history.goBack();
}, 800);
......
......@@ -4,7 +4,7 @@ import { Badge } from 'antd';
/** 质检单号 */
export const qualityNo: ColumnType<any> = {
title: '质检单号',
title: getIntl().formatMessage({ id: 'quality.zhijiandanhao', defaultMessage: '质检单号' }),
key: 'qualityNo',
dataIndex: 'qualityNo',
width: 160,
......@@ -13,7 +13,7 @@ export const qualityNo: ColumnType<any> = {
/** 质检单摘要 */
export const digest: ColumnType<any> = {
title: '质检单摘要',
title: getIntl().formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' }),
key: 'digest',
dataIndex: 'digest',
width: 300,
......@@ -22,7 +22,7 @@ export const digest: ColumnType<any> = {
/** 质检开始日期 */
export const startTime: ColumnType<any> = {
title: '质检开始日期',
title: getIntl().formatMessage({ id: 'quality.zhijiankaishiriqi', defaultMessage: '质检开始日期' }),
key: 'startTime',
dataIndex: 'startTime',
width: 150,
......@@ -31,7 +31,7 @@ export const startTime: ColumnType<any> = {
/** 质检结束日期 */
export const endTime: ColumnType<any> = {
title: '质检结束日期',
title: getIntl().formatMessage({ id: 'quality.zhijianjieshuriqi', defaultMessage: '质检结束日期' }),
key: 'endTime',
dataIndex: 'endTime',
width: 150,
......@@ -40,7 +40,7 @@ export const endTime: ColumnType<any> = {
/** 质检类型 */
export const qualityTypeName: ColumnType<any> = {
title: '质检类型',
title: getIntl().formatMessage({ id: 'quality.zhijianleixing', defaultMessage: '质检类型' }),
key: 'qualityTypeName',
dataIndex: 'qualityTypeName',
width: 96,
......@@ -49,7 +49,7 @@ export const qualityTypeName: ColumnType<any> = {
/** 来源收货单号 */
export const receiveNo: ColumnType<any> = {
title: '来源收货单号',
title: getIntl().formatMessage({ id: 'quality.laiyuanshouhuodanhao', defaultMessage: '来源收货单号' }),
key: 'receiveNo',
dataIndex: 'receiveNo',
width: 152,
......@@ -58,7 +58,7 @@ export const receiveNo: ColumnType<any> = {
/** 供应商 */
export const vendorMemberName: ColumnType<any> = {
title: '供应商',
title: getIntl().formatMessage({ id: 'quality.gongyingshang', defaultMessage: '供应商' }),
key: 'vendorMemberName',
dataIndex: 'vendorMemberName',
width: 160,
......@@ -67,7 +67,7 @@ export const vendorMemberName: ColumnType<any> = {
/** 采购商 */
export const buyerMemberName: ColumnType<any> = {
title: '采购商',
title: getIntl().formatMessage({ id: 'quality.caigoushang', defaultMessage: '采购商' }),
key: 'buyerMemberName',
dataIndex: 'buyerMemberName',
width: 160,
......@@ -76,7 +76,7 @@ export const buyerMemberName: ColumnType<any> = {
/** 单据时间 */
export const createTime: ColumnType<any> = {
title: '单据时间',
title: getIntl().formatMessage({ id: 'quality.danjushijian', defaultMessage: '单据时间' }),
key: 'createTime',
dataIndex: 'createTime',
width: 128,
......@@ -85,7 +85,7 @@ export const createTime: ColumnType<any> = {
/** 内部状态 */
export const outerStatusName: ColumnType<any> = {
title: '内部状态',
title: getIntl().formatMessage({ id: 'quality.neibuzhuangtai', defaultMessage: '内部状态' }),
key: 'outerStatusName',
dataIndex: 'outerStatusName',
width: 128,
......@@ -95,9 +95,107 @@ export const outerStatusName: ColumnType<any> = {
/** 操作 */
export const operation: ColumnType<any> = {
title: '操作',
title: getIntl().formatMessage({ id: 'quality.caozuo', defaultMessage: '操作' }),
key: 'operation',
dataIndex: 'operation',
width: 148,
fixed: 'right',
}
/** 不良原因 */
export const badReasons: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.buliangyuanyin', defaultMessage: '不良原因' }),
key: 'badReasons',
dataIndex: 'badReasons',
}
/** 不良说明 */
export const badDescription: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.buliangshuoming', defaultMessage: '不良说明' }),
key: 'badDescription',
dataIndex: 'badDescription',
}
/** 测量值 */
export const measurements: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.celiangzhi', defaultMessage: '测量值' }),
key: 'measurements',
dataIndex: 'measurements',
}
/** 不良数量 */
export const badCount: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.buliangshuliang', defaultMessage: '不良数量' }),
key: 'badCount',
dataIndex: 'badCount',
}
/** 收货判定 */
export const receiptJudgmentType: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.shouhuopanding', defaultMessage: '收货判定' }),
key: 'receiptJudgmentType',
dataIndex: 'receiptJudgmentType',
}
/** 退货类型 */
export const returnType: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.tuihuoleixing', defaultMessage: '退货类型' }),
key: 'returnType',
dataIndex: 'returnType',
}
/** 处理方式 */
export const handleType: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.chulifangshi', defaultMessage: '处理方式' }),
key: 'handleType',
dataIndex: 'handleType',
}
/** 备注 */
export const remark: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.beizhu', defaultMessage: '备注' }),
key: 'remark',
dataIndex: 'remark',
}
/** 分组 */
export const grouping: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.fenzu', defaultMessage: '分组' }),
key: 'grouping',
dataIndex: 'grouping',
}
/** 检验项目 */
export const testItems: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.jianyanxiangmu', defaultMessage: '检验项目' }),
key: 'testItems',
dataIndex: 'testItems',
}
/** 合格范围 */
export const qualifiedRange: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.hegefanwei', defaultMessage: '合格范围' }),
key: 'qualifiedRange',
dataIndex: 'qualifiedRange',
}
/** 检验说明 */
export const inspectionInstructions: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.jianyanshuoming', defaultMessage: '检验说明' }),
key: 'inspectionInstructions',
dataIndex: 'inspectionInstructions',
}
/** 检测值 */
export const inspectionValue: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.jiancezhi', defaultMessage: '检测值' }),
key: 'inspectionValue',
dataIndex: 'inspectionValue',
}
/** 检验判断 */
export const inspectionJudgmentType: ColumnType<any> = {
title: getIntl().formatMessage({ id: 'quality.jianyanpanduan', defaultMessage: '检验判断' }),
key: 'inspectionJudgmentType',
dataIndex: 'inspectionJudgmentType',
}
......@@ -247,9 +247,9 @@ const QualityManageSrmAdded = (props: any) => {
</div>
}
tabLink={[
{ title: '基本信息', id: 'basicInfo' },
{ title: '质检商品', id: 'qualityMaterial' },
{ title: '附件', id: 'attachment' },
{ title: intl.formatMessage({ id: 'quality.jibenxinxi', defaultMessage: '基本信息' }), id: 'basicInfo' },
{ title: intl.formatMessage({ id: 'quality.zhijianshangpin', defaultMessage: '质检商品' }), id: 'qualityMaterial' },
{ title: intl.formatMessage({ id: 'quality.fujian', defaultMessage: '附件' }), id: 'attachment' },
]}
effect={
<Button
......@@ -258,7 +258,7 @@ const QualityManageSrmAdded = (props: any) => {
onClick={() => handleSubmit()}
loading={loading}
>
保存
{intl.formatMessage({ id: 'quality.baocun', defaultMessage: '保存' })}
</Button>
}
components={
......@@ -282,7 +282,7 @@ const QualityManageSrmAdded = (props: any) => {
</Form>
}
/>
<Prompt when={unsaved} message="您还有未保存的内容,是否确定要离开?" />
<Prompt when={unsaved} message={intl.formatMessage({ id: 'quality.ninhaiyouweibaocundenei', defaultMessage: '您还有未保存的内容,是否确定要离开?' })} />
</AddedContext.Provider>
)
}
......
import React from 'react';
import { getIntl } from 'umi';
import { Col, Form, Row } from 'antd';
import CardLayout from '@/components/CardLayout';
import UploadFiles from '@/pages/transaction/components/uploadFiles';
......@@ -13,11 +14,12 @@ interface AttachmentLayoutProps {
}
const AttachmentLayout: React.FC<AttachmentLayoutProps> = (props: any) => {
const intl = getIntl();
const { enclosureUrls, getEnclosureUrls, removeEnclosureUrls } = props;
return (
<CardLayout
id='attachment'
title='附件'
title={intl.formatMessage({ id: 'quality.fujian', defaultMessage: '附件' })}
weight
bodyStyle={{ paddingBottom: '0px' }}
>
......
import React, { useCallback, useContext, useEffect, useState } from 'react';
import CardLayout from '@/components/CardLayout';
import { getIntl } from 'umi';
import { Button, Col, DatePicker, Form, Input, message, Row, Select } from 'antd';
import { LinkOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table';
......@@ -19,6 +20,7 @@ interface BasicInfoLaoutProps { }
const index = 0;
const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
const intl = getIntl();
const id = null
const { form, dataSource, PATH, onFieldsChange } = useContext(AddedContext);
const [visible, setVisible] = useState<boolean>(false);
......@@ -26,27 +28,27 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
const [qualityNo, setQualityNo] = useState<string>('');
const columns: ColumnType<any>[] = [
{
title: '会员ID',
title: intl.formatMessage({ id: 'quality.huiyuanID', defaultMessage: '会员ID' }),
key: 'memberId',
dataIndex: 'memberId',
},
{
title: '会员名称',
title: intl.formatMessage({ id: 'quality.huiyuanmingcheng', defaultMessage: '会员名称' }),
key: 'name',
dataIndex: 'name',
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'quality.huiyuanleixing', defaultMessage: '会员类型' }),
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'quality.huiyuanjuese', defaultMessage: '会员角色' }),
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
title: intl.formatMessage({ id: 'quality.huiyuandengji', defaultMessage: '会员等级' }),
key: 'levelTag',
dataIndex: 'levelTag',
},
......@@ -121,45 +123,45 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
return (
<CardLayout
id='basicInfo'
title='基本信息'
title={intl.formatMessage({ id: 'quality.jibenxinxi', defaultMessage: '基本信息' })}
weight
bodyStyle={{ paddingBottom: '0px' }}
classNames={styles['basic-layout']}
>
<Row gutter={[16, 36]}>
<Col span={12}>
<Form.Item label='质检单编号'>
<Form.Item label={intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}>
<span>{qualityNo}</span>
</Form.Item>
<Form.Item hidden name='qualityNo' label='质检单编号'>
<Form.Item hidden name='qualityNo' label={intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}>
<Input />
</Form.Item>
<Form.Item name='digest' label='质检单摘要' rules={[{ required: true }]}>
<Input placeholder='请输入质检单摘要' />
<Form.Item name='digest' label={intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })} rules={[{ required: true }]}>
<Input placeholder={intl.formatMessage({ id: 'quality.qingshuruzhijiandanzhaiyao', defaultMessage: '请输入质检单摘要' })} />
</Form.Item>
<Form.Item name='qualityType' label='质检类型' rules={[{ required: true }]}>
<Form.Item name='qualityType' label={intl.formatMessage({ id: 'quality.zhijianleixing', defaultMessage: '质检类型' })} rules={[{ required: true }]}>
<Select>
<Select.Option value={1}>来料质检</Select.Option>
<Select.Option value={2}>样品质检</Select.Option>
<Select.Option value={3}>试制品质检</Select.Option>
<Select.Option value={1}>{intl.formatMessage({ id: 'quality.lailiaozhijian', defaultMessage: '来料质检' })}</Select.Option>
<Select.Option value={2}>{intl.formatMessage({ id: 'quality.yangpinzhijian', defaultMessage: '样品质检' })}</Select.Option>
<Select.Option value={3}>{intl.formatMessage({ id: 'quality.shizhipinzhijian', defaultMessage: '试制品质检' })}</Select.Option>
</Select>
</Form.Item>
<Form.Item name='vendorMemberName' label='供应会员' rules={[{ required: true }]}>
<Form.Item name='vendorMemberName' label={intl.formatMessage({ id: 'quality.gongyinghuiyuan', defaultMessage: '供应会员' })} rules={[{ required: true }]}>
<Input.Search disabled={(PATH === 'formed' || dataSource?.orderResource === ODR_TWO)} onSearch={() => toggle(true)} readOnly enterButton={<LinkOutlined />} />
</Form.Item>
<Form.Item hidden name='vendorMemberId' label='供应商会员Id' rules={[{ required: true }]}>
<Input placeholder='供应商会员Id' />
<Form.Item hidden name='vendorMemberId' label={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanId', defaultMessage: '供应商会员Id' })} rules={[{ required: true }]}>
<Input placeholder={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanId', defaultMessage: '供应商会员Id' })} />
</Form.Item>
<Form.Item hidden name='vendorRoleId' label='供应商会员角色Id' rules={[{ required: true }]}>
<Input placeholder='供应商会员角色Id' />
</Form.Item>
<Form.Item name='digest' label='质检日期' required>
<Form.Item name='digest' label={intl.formatMessage({ id: 'quality.zhijianriqi', defaultMessage: '质检日期' })} required>
<div className={styles['digest']}>
<Form.Item
name='startTime'
validateFirst
rules={[
{ required: true, message: '请选择' },
{ required: true, message: intl.formatMessage({ id: 'quality.qingxuanze', defaultMessage: '请选择' }) },
]}
>
<DatePicker
......@@ -178,10 +180,10 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
validator: (_, value) => {
const _startTime = form.getFieldValue('startTime');
if (!value) {
return Promise.reject(new Error('请选择'));
return Promise.reject(new Error(intl.formatMessage({ id: 'quality.qingxuanze', defaultMessage: '请选择' })));
}
if (_startTime && !moment(value).isSameOrAfter(_startTime)) {
return Promise.reject(new Error('质检结束日期大于或等于质检开始日期'));
return Promise.reject(new Error(intl.formatMessage({ id: 'quality.zhijianjieshuriqidayu', defaultMessage: '质检结束日期大于或等于质检开始日期' })));
}
return Promise.resolve();
}
......@@ -201,23 +203,23 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
<Col span={12}>
<Form.Item
name='qualityInspector'
label='质检人'
label={intl.formatMessage({ id: 'quality.zhijianren', defaultMessage: '质检人' })}
rules={[
{ validator: (rule, value, callback) => validatorByte(rule, value, callback, 40) }
]}
>
<Input placeholder='最长20个汉字' />
<Input placeholder={intl.formatMessage({ id: 'quality.zuichang20gehanzi', defaultMessage: '最长20个汉字' })} />
</Form.Item>
<Form.Item
name='remark'
label='备注'
label={intl.formatMessage({ id: 'quality.beizhu', defaultMessage: '备注' })}
rules={[
{ validator: (rule, value, callback) => validatorByte(rule, value, callback, 300) }
]}
>
<Input placeholder='最长150个汉字' />
<Input placeholder={intl.formatMessage({ id: 'quality.zuichang150gehanzi', defaultMessage: '最长150个汉字' })} />
</Form.Item>
<Form.Item label='收货单号'>
<Form.Item label={intl.formatMessage({ id: 'quality.shouhuodanhao', defaultMessage: '收货单号' })}>
<Button target='_blank' type='link' href={`/memberCenter/order/receivingNote/deliveryNoteManage/details?id=${dataSource?.receiveId}`}>{dataSource?.receiveNo}</Button>
</Form.Item>
<Form.Item hidden name='receiveId' label='收货单号ID'>
......@@ -237,7 +239,7 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
}}
mode="radio"
customKey='mrId'
title='选择供应商'
title={intl.formatMessage({ id: 'quality.xuanzegongyingshang', defaultMessage: '选择供应商' })}
schema={{
type: "object",
properties: {
......@@ -250,7 +252,7 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '会员名称',
placeholder: intl.formatMessage({ id: 'quality.huiyuanmingcheng', defaultMessage: '会员名称' }),
advanced: false,
align: "flex-left",
}
......
import React, { useRef } from 'react';
import TableLayout from '@/components/TableLayout';
import { getIntl } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../columns';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../../columns';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { Button, Dropdown, Menu, Popconfirm, Space } from 'antd';
import { CaretDownOutlined, PlusOutlined } from '@ant-design/icons';
......@@ -9,8 +10,11 @@ import { Link, history } from 'umi';
import { getOrderQualityGetB2BQualityOrderPage } from '@/services/OrderNewV2Api';
import { postOrderQualitySubmit } from '@/services/OrderNewV2Api';
import { postOrderQualityDeleteById } from '@/services/OrderNewV2Api';
import AuthButton from '@/components/AuthButton';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
const QualityManageB2BTable: React.FC<{}> = () => {
const intl = getIntl();
const ref = useRef<any>({})
/** 提交 */
const handleSubmit = (id) => {
......@@ -34,7 +38,7 @@ const QualityManageB2BTable: React.FC<{}> = () => {
const columns: ColumnType<any>[] = [
{
...qualityNo,
render: (_text, record) => <Link to={`b2b/preview?id=${record?.id}`}>{_text}</Link>
render: (_text, record) => AuthUrl('qb2b.preview') ? <Link to={`b2b/preview?id=${record?.id}`}>{_text}</Link> : _text
},
{
...digest,
......@@ -63,30 +67,34 @@ const QualityManageB2BTable: React.FC<{}> = () => {
{
...operation,
render: (_text, record) => <>
<Popconfirm
title='是否已质检完成?提交则表示质检完成,质检完成的质检单不允许修改。'
okText='是'
cancelText='否'
arrowPointAtCenter
autoAdjustOverflow={false}
onConfirm={() => handleSubmit(record?.id)}
>
<Button type='link'>提交</Button>
</Popconfirm>
<AuthButton btnCode='qb2b.submit' >
<Popconfirm
title={intl.formatMessage({ id: 'quality.shifouyizhijianwancheng', defaultMessage: '是否已质检完成?提交则表示质检完成,质检完成的质检单不允许修改。' })}
okText={intl.formatMessage({ id: 'quality.shi', defaultMessage: '是' })}
cancelText={intl.formatMessage({ id: 'quality.fou', defaultMessage: '否' })}
arrowPointAtCenter
autoAdjustOverflow={false}
onConfirm={() => handleSubmit(record?.id)}
>
<Button type='link'>{intl.formatMessage({ id: 'quality.tijiao', defaultMessage: '提交' })}</Button>
</Popconfirm>
</AuthButton>
<Dropdown overlay={() => (
<Menu>
<Menu.Item key="1"> <Button type='link' href={`b2b/edit?id=${record?.id}`}>修改</Button></Menu.Item>
<Popconfirm
title='是否删除当前质检单?'
okText='是'
cancelText='否'
onConfirm={() => handleDelete(record?.id)}
>
<Menu.Item key="2"><Button type='link'>删除</Button></Menu.Item>
</Popconfirm>
{AuthUrl('qb2b.edit') && (<Menu.Item key="1"> <Button type='link' href={`b2b/edit?id=${record?.id}`}>{intl.formatMessage({ id: 'quality.xiugai', defaultMessage: '修改' })}</Button></Menu.Item>)}
{AuthUrl('qb2b.del') && (
<Popconfirm
title={intl.formatMessage({ id: 'quality.shifoushanchudangqianzhijian', defaultMessage: '是否删除当前质检单?' })}
okText={intl.formatMessage({ id: 'quality.shi', defaultMessage: '是' })}
cancelText={intl.formatMessage({ id: 'quality.fou', defaultMessage: '否' })}
onConfirm={() => handleDelete(record?.id)}
>
<Menu.Item key="2"><Button type='link'>{intl.formatMessage({ id: 'quality.shanchu', defaultMessage: '删除' })}</Button></Menu.Item>
</Popconfirm>
)}
</Menu>
)}>
<Button type='link'>更多<CaretDownOutlined /></Button>
<Button type='link'>{intl.formatMessage({ id: 'quality.gengduo', defaultMessage: '更多' })}<CaretDownOutlined /></Button>
</Dropdown>
</>
},
......@@ -116,7 +124,7 @@ const QualityManageB2BTable: React.FC<{}> = () => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '质检单号'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanhao', defaultMessage: '质检单号' })
}
}
}
......@@ -146,20 +154,20 @@ const QualityManageB2BTable: React.FC<{}> = () => {
digest: {
type: "string",
"x-component-props": {
placeholder: '质检单摘要'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })
}
},
vendorMemberName: {
type: "string",
"x-component-props": {
placeholder: '供应商'
placeholder: intl.formatMessage({ id: 'quality.gongyingshang', defaultMessage: '供应商' })
}
},
"[startTime,endTime]": {
type: "string",
"x-component": "DateRangePickerUnix",
"x-component-props": {
placeholder: ['质检开始时间', '质检结束时间'],
placeholder: [intl.formatMessage({ id: 'quality.zhijiankaishishijian', defaultMessage: '质检开始时间' }), intl.formatMessage({ id: 'quality.zhijianjieshushijian', defaultMessage: '质检结束时间' })],
showTime: false,
format: 'YYYY-MM-DD'
}
......@@ -172,7 +180,7 @@ const QualityManageB2BTable: React.FC<{}> = () => {
span: 1
},
"x-component-props": {
children: '查询'
children: intl.formatMessage({ id: 'quality.chaxun', defaultMessage: '查询' })
}
}
}
......@@ -182,13 +190,15 @@ const QualityManageB2BTable: React.FC<{}> = () => {
fetch={getOrderQualityGetB2BQualityOrderPage}
controllerBtns={
<Space direction="horizontal" size={16}>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => history.push('/memberCenter/quality/qualityManage/b2b/add')}
>
新增
</Button>
<AuthButton btnCode='qb2b.add' >
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => history.push('/memberCenter/quality/qualityManage/b2b/add')}
>
{intl.formatMessage({ id: 'quality.xinzeng', defaultMessage: '新增' })}
</Button>
</AuthButton>
</Space>
}
/>
......
......@@ -2,6 +2,23 @@ import React, { useCallback, useEffect, useMemo } from 'react';
import { Col, Drawer, Form, InputNumber, Row, Select, Space, Table as Badrecord, Table as Inspectionrecord } from 'antd';
import { ColumnType } from 'antd/lib/table';
import styles from './index.less';
import { getIntl } from 'umi';
import {
badCount,
badDescription,
badReasons,
grouping,
handleType,
inspectionInstructions,
inspectionJudgmentType,
inspectionValue,
measurements,
qualifiedRange,
receiptJudgmentType,
remark,
returnType,
testItems
} from '@/pages/quality/columns';
export type DetectionType = {
/** 质检单编号 */
......@@ -54,88 +71,63 @@ export const layout: any = {
};
const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
const intl = getIntl();
const { detection, visible, onClose } = props;
const [form] = Form.useForm();
/** 不良记录表头 */
const badrecordColumns: ColumnType<any>[] = [
{
title: '不良原因',
key: 'badReasons',
dataIndex: 'badReasons',
...badReasons,
},
{
title: '不良说明',
key: 'badDescription',
dataIndex: 'badDescription',
...badDescription,
},
{
title: '测量值',
key: 'measurements',
dataIndex: 'measurements',
...measurements,
},
{
title: '不良数量',
key: 'badCount',
dataIndex: 'badCount',
...badCount,
},
{
title: '收货判定',
key: 'receiptJudgmentTypeName',
dataIndex: 'receiptJudgmentTypeName',
...receiptJudgmentType,
render: (_text, record) => record?.receiptJudgmentTypeName
},
{
title: '退货类型',
key: 'returnTypeName',
dataIndex: 'returnTypeName',
...returnType,
render: (_text, record) => record?.returnTypeName
},
{
title: '处理方式',
key: 'handleTypeName',
dataIndex: 'handleTypeName',
...handleType,
render: (_text, record) => record?.handleTypeName
},
{
title: '备注',
key: 'remark',
dataIndex: 'remark',
...remark
},
];
/** 检验记录表头 */
const inspectionrecordColumns: ColumnType<any>[] = [
{
title: '分组',
key: 'grouping',
dataIndex: 'grouping',
...grouping,
},
{
title: '检验项目',
key: 'testItems',
dataIndex: 'testItems',
...testItems,
},
{
title: '合格范围',
key: 'qualifiedRange',
dataIndex: 'qualifiedRange',
...qualifiedRange,
render: (_text, record) => <>{`${record.startValue}~${record.endValue}`}</>
},
{
title: '检验说明',
key: 'inspectionInstructions',
dataIndex: 'inspectionInstructions',
...inspectionInstructions,
},
{
title: '检测值',
key: 'inspectionValue',
dataIndex: 'inspectionValue',
...inspectionValue,
},
{
title: '备注',
key: 'remark',
dataIndex: 'remark',
...remark,
},
{
title: '检验判断',
key: 'inspectionJudgmentTypeName',
dataIndex: 'inspectionJudgmentTypeName',
...inspectionJudgmentType,
render: (_text, record) => record?.inspectionJudgmentTypeName
},
];
......@@ -157,7 +149,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
return (
<Drawer
width={1000}
title='检验记录'
title={intl.formatMessage({ id: 'quality.jianyanjilu', defaultMessage: '检验记录' })}
closable
visible={visible}
onClose={onClose}
......@@ -167,15 +159,15 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
<Space direction='vertical' size={16}>
<Space direction='vertical' size={16}>
<div className={styles['info']}>
<span>质检单编号</span>
<span>{intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}</span>
<span>{data?.qualityNo}</span>
</div>
<div className={styles['info']}>
<span>供应商名称</span>
<span>{intl.formatMessage({ id: 'quality.gongyingshangmingcheng', defaultMessage: '供应商名称' })}</span>
<span>{data?.vendorMemberName}</span>
</div>
<div className={styles['info']}>
<span>检验方式</span>
<span>{intl.formatMessage({ id: 'quality.jianyanfangshi', defaultMessage: '检验方式' })}</span>
<span>{data?.inspectionTypeName}</span>
</div>
</Space>
......@@ -187,20 +179,20 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
size={16}
>
<Form.Item
label='送检数量'
label={intl.formatMessage({ id: 'quality.songjianshuliang', defaultMessage: '送检数量' })}
name='submissionCount'
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='抽样数量'
label={intl.formatMessage({ id: 'quality.chouyangshuliang', defaultMessage: '抽样数量' })}
name='samplesCount'
dependencies={['submissionCount']}
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='让步接收数量'
label={intl.formatMessage({ id: 'quality.rangbujieshoushuliang', defaultMessage: '让步接收数量' })}
name='concessionToReceiveCount'
>
<InputNumber disabled />
......@@ -213,24 +205,24 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
size={16}
>
<Form.Item
label='批次判定'
label={intl.formatMessage({ id: 'quality.picipanding', defaultMessage: '批次判定' })}
name='batchJudgmentType'
>
<Select disabled>
<Select.Option value={1}>合格</Select.Option>
<Select.Option value={2}>部分合格</Select.Option>
<Select.Option value={3}>让步接收</Select.Option>
<Select.Option value={4}>拒收</Select.Option>
<Select.Option value={1}>{intl.formatMessage({ id: 'quality.hege', defaultMessage: '合格' })}</Select.Option>
<Select.Option value={2}>{intl.formatMessage({ id: 'quality.bufenhege', defaultMessage: '部分合格' })}</Select.Option>
<Select.Option value={3}>{intl.formatMessage({ id: 'quality.rangbujieshou', defaultMessage: '让步接收' })}</Select.Option>
<Select.Option value={4}>{intl.formatMessage({ id: 'quality.jushou', defaultMessage: '拒收' })}</Select.Option>
</Select>
</Form.Item>
<Form.Item
label='允收数量'
label={intl.formatMessage({ id: 'quality.yunshoushuliang', defaultMessage: '允收数量' })}
name='acceptanceCount'
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='拒收数量'
label={intl.formatMessage({ id: 'quality.jushoushuliang', defaultMessage: '拒收数量' })}
name='rejectCount'
>
<InputNumber disabled />
......@@ -242,7 +234,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
{detection?.inspectionType !== inspectionType.ONE && (
<>
<Space direction='vertical' size={16}>
<div className={styles['vertical']}>不良记录</div>
<div className={styles['vertical']}>{intl.formatMessage({ id: 'quality.buliangjilu', defaultMessage: '不良记录' })}</div>
<Badrecord
rowKey='id'
pagination={false}
......@@ -251,7 +243,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
/>
</Space>
<Space direction='vertical' size={16}>
<div className={styles['vertical']}>检验记录</div>
<div className={styles['vertical']}>{intl.formatMessage({ id: 'quality.jianyanjilu', defaultMessage: '检验记录' })}</div>
<Inspectionrecord
rowKey='id'
pagination={false}
......
import React from 'react';
import TableLayout from '@/components/TableLayout';
import { ColumnType } from 'antd/lib/table/interface';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../columns';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../../columns';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { Link, history } from 'umi';
import { getOrderQualityGetQualityOrderPage } from '@/services/OrderNewV2Api';
import { Badge } from 'antd';
import { getIntl } from 'umi';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
import AuthButton from '@/components/AuthButton';
const QualityManageSearchTable: React.FC<{}> = () => {
const intl = getIntl();
const columns: ColumnType<any>[] = [
{
...qualityNo,
render: (_text, record) => <Link to={`seach/preview?id=${record?.id}`}>{_text}</Link>
render: (_text, record) => AuthUrl('qsearch.preview') ? <Link to={`seach/preview?id=${record?.id}`}>{_text}</Link> : _text
},
{
...digest,
......@@ -41,7 +43,10 @@ const QualityManageSearchTable: React.FC<{}> = () => {
{
...operation,
// render: (_text, record) => <Link to={`seach/detail?id=${record?.id}`}>售后处理</Link>
render: (_text, record) => record?.generate && <Link to={`seach/detail?id=${record?.id}`}>售后处理</Link>
render: (_text, record) => <AuthButton btnCode='qsearch.detail'>
{record?.generate && <Link to={`seach/detail?id=${record?.id}`}>{intl.formatMessage({ id: 'quality.shouhouchuli', defaultMessage: '售后处理' })}</Link>}
</AuthButton>
},
]
......@@ -61,7 +66,7 @@ const QualityManageSearchTable: React.FC<{}> = () => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '质检单号',
placeholder: intl.formatMessage({ id: 'quality.zhijiandanhao', defaultMessage: '质检单号' }),
align: "flex-left",
}
}
......@@ -93,20 +98,20 @@ const QualityManageSearchTable: React.FC<{}> = () => {
digest: {
type: "string",
"x-component-props": {
placeholder: '质检单摘要'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })
}
},
vendorMemberName: {
type: "string",
"x-component-props": {
placeholder: '供应商'
placeholder: intl.formatMessage({ id: 'quality.gongyingshang', defaultMessage: '供应商' })
}
},
"[startTime,endTime]": {
type: "string",
"x-component": "DateRangePickerUnix",
"x-component-props": {
placeholder: ['质检开始时间', '质检结束时间'],
placeholder: [intl.formatMessage({ id: 'quality.zhijiankaishishijian', defaultMessage: '质检开始时间' }), intl.formatMessage({ id: 'quality.zhijianjieshushijian', defaultMessage: '质检结束时间' })],
showTime: false,
format: 'YYYY-MM-DD'
}
......@@ -114,12 +119,12 @@ const QualityManageSearchTable: React.FC<{}> = () => {
outerStatus: {
type: "string",
"x-component-props": {
placeholder: '内部状态'
placeholder: intl.formatMessage({ id: 'quality.neibuzhuangtai', defaultMessage: '内部状态' })
},
enum: [
{ label: '质检中', value: 1 },
{ label: '质检完成', value: 2 },
{ label: '已生成售后单', value: 3 },
{ label: intl.formatMessage({ id: 'quality.zhijianzhong', defaultMessage: '质检中' }), value: 1 },
{ label: intl.formatMessage({ id: 'quality.zhijianwancheng', defaultMessage: '质检完成' }), value: 2 },
{ label: intl.formatMessage({ id: 'quality.yishengchengshouhoudan', defaultMessage: '已生成售后单' }), value: 3 },
]
},
}
......@@ -130,7 +135,7 @@ const QualityManageSearchTable: React.FC<{}> = () => {
span: 1
},
"x-component-props": {
children: '查询'
children: intl.formatMessage({ id: 'quality.chaxun', defaultMessage: '查询' })
}
}
}
......
......@@ -244,9 +244,9 @@ const QualityManageSrmAdded = (props: any) => {
</div>
}
tabLink={[
{ title: '基本信息', id: 'basicInfo' },
{ title: '质检物料', id: 'qualityMaterial' },
{ title: '附件', id: 'attachment' },
{ title: intl.formatMessage({ id: 'quality.jibenxinxi', defaultMessage: '基本信息' }), id: 'basicInfo' },
{ title: intl.formatMessage({ id: 'quality.zhijianwuliao', defaultMessage: '质检物料' }), id: 'qualityMaterial' },
{ title: intl.formatMessage({ id: 'quality.fujian', defaultMessage: '附件' }), id: 'attachment' },
]}
effect={
<Button
......@@ -255,7 +255,7 @@ const QualityManageSrmAdded = (props: any) => {
onClick={() => handleSubmit()}
loading={loading}
>
保存
{intl.formatMessage({ id: 'quality.baocun', defaultMessage: '保存' })}
</Button>
}
components={
......@@ -279,7 +279,7 @@ const QualityManageSrmAdded = (props: any) => {
</Form>
}
/>
<Prompt when={unsaved} message="您还有未保存的内容,是否确定要离开?" />
<Prompt when={unsaved} message={intl.formatMessage({ id: 'quality.ninhaiyouweibaocundenei', defaultMessage: '您还有未保存的内容,是否确定要离开?' })} />
</AddedContext.Provider>
)
}
......
......@@ -2,7 +2,7 @@ import React from 'react';
import { Col, Form, Input, Row, Space } from 'antd';
import CardLayout from '@/components/CardLayout';
import UploadFiles from '@/pages/transaction/components/uploadFiles';
import { getIntl } from 'umi';
interface AttachmentLayoutProps {
/** 附件列表 */
enclosureUrls?: any[],
......@@ -13,11 +13,12 @@ interface AttachmentLayoutProps {
}
const AttachmentLayout: React.FC<AttachmentLayoutProps> = (props: any) => {
const intl = getIntl();
const { enclosureUrls, getEnclosureUrls, removeEnclosureUrls } = props;
return (
<CardLayout
id='attachment'
title='附件'
title={intl.formatMessage({ id: 'quality.fujian', defaultMessage: '附件' })}
weight
bodyStyle={{ paddingBottom: '0px' }}
>
......
......@@ -3,6 +3,7 @@ import CardLayout from '@/components/CardLayout';
import { Button, Col, DatePicker, Form, Input, message, Row, Select } from 'antd';
import { LinkOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table';
import { getIntl } from 'umi';
import styles from './index.less';
import TableModal from '@/pages/transaction/components/tableModal';
import { FORM_FILTER_PATH } from '@/formSchema/const';
......@@ -20,33 +21,34 @@ const index = 0;
const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
const id = null
const intl = getIntl();
const { form, dataSource, PATH, onFieldsChange } = useContext(AddedContext);
const [visible, setVisible] = useState<boolean>(false);
const [menberValue, setMenberValue] = useState<any[]>([]);
const [qualityNo, setQualityNo] = useState<string>('');
const columns: ColumnType<any>[] = [
{
title: '会员ID',
title: intl.formatMessage({ id: 'quality.huiyuanID', defaultMessage: '会员ID' }),
key: 'memberId',
dataIndex: 'memberId',
},
{
title: '会员名称',
title: intl.formatMessage({ id: 'quality.huiyuanmingcheng', defaultMessage: '会员名称' }),
key: 'name',
dataIndex: 'name',
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'quality.huiyuanleixing', defaultMessage: '会员类型' }),
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'quality.huiyuanjuese', defaultMessage: '会员角色' }),
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
title: intl.formatMessage({ id: 'quality.huiyuandengji', defaultMessage: '会员等级' }),
key: 'levelTag',
dataIndex: 'levelTag',
},
......@@ -121,45 +123,45 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
return (
<CardLayout
id='basicInfo'
title='基本信息'
title={intl.formatMessage({ id: 'quality.jibenxinxi', defaultMessage: '基本信息' })}
weight
bodyStyle={{ paddingBottom: '0px' }}
classNames={styles['basic-layout']}
>
<Row gutter={[16, 36]}>
<Col span={12}>
<Form.Item label='质检单编号'>
<Form.Item label={intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}>
<span>{qualityNo}</span>
</Form.Item>
<Form.Item hidden name='qualityNo' label='质检单编号'>
<Form.Item hidden name='qualityNo' label={intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}>
<Input />
</Form.Item>
<Form.Item name='digest' label='质检单摘要' rules={[{ required: true }]}>
<Input placeholder='请输入质检单摘要' />
<Form.Item name='digest' label={intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })} rules={[{ required: true }]}>
<Input placeholder={intl.formatMessage({ id: 'quality.qingshuruzhijiandanzhaiyao', defaultMessage: '请输入质检单摘要' })} />
</Form.Item>
<Form.Item name='qualityType' label='质检类型' rules={[{ required: true }]}>
<Form.Item name='qualityType' label={intl.formatMessage({ id: 'quality.zhijianleixing', defaultMessage: '质检类型' })} rules={[{ required: true }]}>
<Select>
<Select.Option value={1}>来料质检</Select.Option>
<Select.Option value={2}>样品质检</Select.Option>
<Select.Option value={3}>试制品质检</Select.Option>
<Select.Option value={1}>{intl.formatMessage({ id: 'quality.lailiaozhijian', defaultMessage: '来料质检' })}</Select.Option>
<Select.Option value={2}>{intl.formatMessage({ id: 'quality.yangpinzhijian', defaultMessage: '样品质检' })}</Select.Option>
<Select.Option value={3}>{intl.formatMessage({ id: 'quality.shizhipinzhijian', defaultMessage: '试制品质检' })}</Select.Option>
</Select>
</Form.Item>
<Form.Item name='vendorMemberName' label='供应会员' rules={[{ required: true }]}>
<Form.Item name='vendorMemberName' label={intl.formatMessage({ id: 'quality.gongyinghuiyuan', defaultMessage: '供应会员' })} rules={[{ required: true }]}>
<Input.Search disabled={(PATH === 'formed' || dataSource?.orderResource === ODR_TWO)} onSearch={() => toggle(true)} readOnly enterButton={<LinkOutlined />} />
</Form.Item>
<Form.Item hidden name='vendorMemberId' label='供应商会员Id' rules={[{ required: true }]}>
<Input placeholder='供应商会员Id' />
<Form.Item hidden name='vendorMemberId' label={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanId', defaultMessage: '供应商会员Id' })} rules={[{ required: true }]}>
<Input placeholder={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanId', defaultMessage: '供应商会员Id' })} />
</Form.Item>
<Form.Item hidden name='vendorRoleId' label='供应商会员角色Id' rules={[{ required: true }]}>
<Input placeholder='供应商会员角色Id' />
<Form.Item hidden name='vendorRoleId' label={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanjueseId', defaultMessage: '供应商会员角色Id' })} rules={[{ required: true }]}>
<Input placeholder={intl.formatMessage({ id: 'quality.gongyingshanghuiyuanjueseId', defaultMessage: '供应商会员角色Id' })} />
</Form.Item>
<Form.Item name='digest' label='质检日期' required>
<Form.Item name='digest' label={intl.formatMessage({ id: 'quality.zhijianriqi', defaultMessage: '质检日期' })} required>
<div className={styles['digest']}>
<Form.Item
name='startTime'
validateFirst
rules={[
{ required: true, message: '请选择' },
{ required: true, message: intl.formatMessage({ id: 'quality.qingxuanze', defaultMessage: '请选择' }) },
]}
>
<DatePicker
......@@ -201,23 +203,23 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
<Col span={12}>
<Form.Item
name='qualityInspector'
label='质检人'
label={intl.formatMessage({ id: 'quality.zhijianren', defaultMessage: '质检人' })}
rules={[
{ validator: (rule, value, callback) => validatorByte(rule, value, callback, 40) }
]}
>
<Input placeholder='最长20个汉字' />
<Input placeholder={intl.formatMessage({ id: 'quality.zuichang20gehanzi', defaultMessage: '最长20个汉字' })} />
</Form.Item>
<Form.Item
name='remark'
label='备注'
label={intl.formatMessage({ id: 'quality.beizhu', defaultMessage: '备注' })}
rules={[
{ validator: (rule, value, callback) => validatorByte(rule, value, callback, 300) }
]}
>
<Input placeholder='最长150个汉字' />
<Input placeholder={intl.formatMessage({ id: 'quality.zuichang150gehanzi', defaultMessage: '最长150个汉字' })} />
</Form.Item>
<Form.Item label='收货单号'>
<Form.Item label={intl.formatMessage({ id: 'quality.shouhuodanhao', defaultMessage: '收货单号' })}>
<Button target='_blank' type='link' href={`/memberCenter/order/receivingNote/deliveryNoteManage/details?id=${dataSource?.receiveId}`}>{dataSource?.receiveNo}</Button>
</Form.Item>
<Form.Item hidden name='receiveId' label='收货单号ID'>
......@@ -237,7 +239,7 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
}}
mode="radio"
customKey='mrId'
title='选择供应商'
title={intl.formatMessage({ id: 'quality.xuanzegongyingshang', defaultMessage: '选择供应商' })}
schema={{
type: "object",
properties: {
......@@ -250,7 +252,7 @@ const BasicInfoLaout: React.FC<BasicInfoLaoutProps> = (props: any) => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '会员名称',
placeholder: intl.formatMessage({ id: 'quality.huiyuanmingcheng', defaultMessage: '会员名称' }),
advanced: false,
align: "flex-left",
}
......
import React, { useRef } from 'react';
import TableLayout from '@/components/TableLayout';
import { ColumnType } from 'antd/lib/table/interface';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../columns';
import { createTime, digest, endTime, operation, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, vendorMemberName } from '../../columns';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { Button, Dropdown, Menu, Popconfirm, Space } from 'antd';
import { CaretDownOutlined, PlusOutlined } from '@ant-design/icons';
import { Link, history } from 'umi';
import { Link, history, getIntl } from 'umi';
import { getOrderQualityGetSrmQualityOrderPage, postOrderQualityDeleteById, postOrderQualitySubmit } from '@/services/OrderNewV2Api'
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
import AuthButton from '@/components/AuthButton';
const QualityManageSrmTable: React.FC<{}> = () => {
const intl = getIntl();
const ref = useRef<any>({})
/** 提交 */
const handleSubmit = (id) => {
......@@ -32,7 +35,7 @@ const QualityManageSrmTable: React.FC<{}> = () => {
const columns: ColumnType<any>[] = [
{
...qualityNo,
render: (_text, record) => <Link to={`srm/preview?id=${record?.id}`}>{_text}</Link>
render: (_text, record) => AuthUrl('qsrm.preview') ? <Link to={`srm/preview?id=${record?.id}`}>{_text}</Link> : _text
},
{
...digest,
......@@ -61,30 +64,34 @@ const QualityManageSrmTable: React.FC<{}> = () => {
{
...operation,
render: (_text, record) => <>
<Popconfirm
title='是否已质检完成?提交则表示质检完成,质检完成的质检单不允许修改。'
okText='是'
cancelText='否'
arrowPointAtCenter
autoAdjustOverflow={false}
onConfirm={() => handleSubmit(record?.id)}
>
<Button type='link'>提交</Button>
</Popconfirm>
<AuthButton btnCode='qsrm.submit' >
<Popconfirm
title={intl.formatMessage({ id: 'quality.shifouyizhijianwancheng', defaultMessage: '是否已质检完成?提交则表示质检完成,质检完成的质检单不允许修改。' })}
okText={intl.formatMessage({ id: 'quality.shi', defaultMessage: '是' })}
cancelText={intl.formatMessage({ id: 'quality.fou', defaultMessage: '否' })}
arrowPointAtCenter
autoAdjustOverflow={false}
onConfirm={() => handleSubmit(record?.id)}
>
<Button type='link'>{intl.formatMessage({ id: 'quality.tijiao', defaultMessage: '提交' })}</Button>
</Popconfirm>
</AuthButton>
<Dropdown overlay={() => (
<Menu>
<Menu.Item key="1"> <Button type='link' href={`srm/edit?id=${record?.id}`}>修改</Button></Menu.Item>
<Popconfirm
title='是否删除当前质检单?'
okText='是'
cancelText='否'
onConfirm={() => handleDelete(record?.id)}
>
<Menu.Item key="2"><Button type='link'>删除</Button></Menu.Item>
</Popconfirm>
{AuthUrl('qsrm.edit') && (<Menu.Item key="1"> <Button type='link' href={`srm/edit?id=${record?.id}`}>{intl.formatMessage({ id: 'quality.xiugai', defaultMessage: '修改' })}</Button></Menu.Item>)}
{AuthUrl('qsrm.del') && (
<Popconfirm
title={intl.formatMessage({ id: 'quality.shifoushanchudangqianzhijian', defaultMessage: '是否删除当前质检单?' })}
okText={intl.formatMessage({ id: 'quality.shi', defaultMessage: '是' })}
cancelText={intl.formatMessage({ id: 'quality.fou', defaultMessage: '否' })}
onConfirm={() => handleDelete(record?.id)}
>
<Menu.Item key="2"><Button type='link'>{intl.formatMessage({ id: 'quality.shanchu', defaultMessage: '删除' })}</Button></Menu.Item>
</Popconfirm>
)}
</Menu>
)}>
<Button type='link'>更多<CaretDownOutlined /></Button>
<Button type='link'>{intl.formatMessage({ id: 'quality.gengduo', defaultMessage: '更多' })}<CaretDownOutlined /></Button>
</Dropdown>
</>
},
......@@ -114,7 +121,7 @@ const QualityManageSrmTable: React.FC<{}> = () => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '质检单号'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanhao', defaultMessage: '质检单号' })
}
}
}
......@@ -144,20 +151,20 @@ const QualityManageSrmTable: React.FC<{}> = () => {
digest: {
type: "string",
"x-component-props": {
placeholder: '质检单摘要'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })
}
},
vendorMemberName: {
type: "string",
"x-component-props": {
placeholder: '供应商'
placeholder: intl.formatMessage({ id: 'quality.gongyingshang', defaultMessage: '供应商' })
}
},
"[startTime,endTime]": {
type: "string",
"x-component": "DateRangePickerUnix",
"x-component-props": {
placeholder: ['质检开始时间', '质检结束时间'],
placeholder: [intl.formatMessage({ id: 'quality.zhijiankaishishijian', defaultMessage: '质检开始时间' }), intl.formatMessage({ id: 'quality.zhijianjieshushijian', defaultMessage: '质检结束时间' })],
showTime: false,
format: 'YYYY-MM-DD'
}
......@@ -170,7 +177,7 @@ const QualityManageSrmTable: React.FC<{}> = () => {
span: 1
},
"x-component-props": {
children: '查询'
children: intl.formatMessage({ id: 'quality.chaxun', defaultMessage: '查询' })
}
}
}
......@@ -180,13 +187,15 @@ const QualityManageSrmTable: React.FC<{}> = () => {
fetch={getOrderQualityGetSrmQualityOrderPage}
controllerBtns={
<Space direction="horizontal" size={16}>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => history.push('/memberCenter/quality/qualityManage/srm/add')}
>
新增
</Button>
<AuthButton btnCode='qsrm.add' >
<Button
type="primary"
icon={<PlusOutlined />}
onClick={() => history.push('/memberCenter/quality/qualityManage/srm/add')}
>
{intl.formatMessage({ id: 'quality.xinzeng', defaultMessage: '新增' })}
</Button>
</AuthButton>
</Space>
}
/>
......
......@@ -2,6 +2,23 @@ import React, { useCallback, useEffect, useMemo } from 'react';
import { Col, Drawer, Form, InputNumber, Row, Select, Space, Table as Badrecord, Table as Inspectionrecord } from 'antd';
import { ColumnType } from 'antd/lib/table';
import styles from './index.less';
import { getIntl } from 'umi';
import {
badCount,
badDescription,
badReasons,
grouping,
handleType,
inspectionInstructions,
inspectionJudgmentType,
inspectionValue,
measurements,
qualifiedRange,
receiptJudgmentType,
remark,
returnType,
testItems
} from '@/pages/quality/columns';
export type DetectionType = {
/** 质检单编号 */
......@@ -54,88 +71,63 @@ export const layout: any = {
};
const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
const intl = getIntl();
const { detection, visible, onClose } = props;
const [form] = Form.useForm();
/** 不良记录表头 */
const badrecordColumns: ColumnType<any>[] = [
{
title: '不良原因',
key: 'badReasons',
dataIndex: 'badReasons',
...badReasons,
},
{
title: '不良说明',
key: 'badDescription',
dataIndex: 'badDescription',
...badDescription,
},
{
title: '测量值',
key: 'measurements',
dataIndex: 'measurements',
...measurements,
},
{
title: '不良数量',
key: 'badCount',
dataIndex: 'badCount',
...badCount,
},
{
title: '收货判定',
key: 'receiptJudgmentTypeName',
dataIndex: 'receiptJudgmentTypeName',
...receiptJudgmentType,
render: (_text, record) => record?.receiptJudgmentTypeName
},
{
title: '退货类型',
key: 'returnTypeName',
dataIndex: 'returnTypeName',
...returnType,
render: (_text, record) => record?.returnTypeName
},
{
title: '处理方式',
key: 'handleTypeName',
dataIndex: 'handleTypeName',
...handleType,
render: (_text, record) => record?.handleTypeName
},
{
title: '备注',
key: 'remark',
dataIndex: 'remark',
...remark
},
];
/** 检验记录表头 */
const inspectionrecordColumns: ColumnType<any>[] = [
{
title: '分组',
key: 'grouping',
dataIndex: 'grouping',
...grouping,
},
{
title: '检验项目',
key: 'testItems',
dataIndex: 'testItems',
...testItems,
},
{
title: '合格范围',
key: 'qualifiedRange',
dataIndex: 'qualifiedRange',
...qualifiedRange,
render: (_text, record) => <>{`${record.startValue}~${record.endValue}`}</>
},
{
title: '检验说明',
key: 'inspectionInstructions',
dataIndex: 'inspectionInstructions',
...inspectionInstructions,
},
{
title: '检测值',
key: 'inspectionValue',
dataIndex: 'inspectionValue',
...inspectionValue,
},
{
title: '备注',
key: 'remark',
dataIndex: 'remark',
...remark,
},
{
title: '检验判断',
key: 'inspectionJudgmentTypeName',
dataIndex: 'inspectionJudgmentTypeName',
...inspectionJudgmentType,
render: (_text, record) => record?.inspectionJudgmentTypeName
},
];
......@@ -157,7 +149,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
return (
<Drawer
width={1000}
title='检验记录'
title={intl.formatMessage({ id: 'quality.jianyanjilu', defaultMessage: '检验记录' })}
closable
visible={visible}
onClose={onClose}
......@@ -167,15 +159,15 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
<Space direction='vertical' size={16}>
<Space direction='vertical' size={16}>
<div className={styles['info']}>
<span>质检单编号</span>
<span>{intl.formatMessage({ id: 'quality.zhijiandanbianhao', defaultMessage: '质检单编号' })}</span>
<span>{data?.qualityNo}</span>
</div>
<div className={styles['info']}>
<span>供应商名称</span>
<span>{intl.formatMessage({ id: 'quality.gongyingshangmingcheng', defaultMessage: '供应商名称' })}</span>
<span>{data?.vendorMemberName}</span>
</div>
<div className={styles['info']}>
<span>检验方式</span>
<span>{intl.formatMessage({ id: 'quality.jianyanfangshi', defaultMessage: '检验方式' })}</span>
<span>{data?.inspectionTypeName}</span>
</div>
</Space>
......@@ -187,20 +179,20 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
size={16}
>
<Form.Item
label='送检数量'
label={intl.formatMessage({ id: 'quality.songjianshuliang', defaultMessage: '送检数量' })}
name='submissionCount'
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='抽样数量'
label={intl.formatMessage({ id: 'quality.chouyangshuliang', defaultMessage: '抽样数量' })}
name='samplesCount'
dependencies={['submissionCount']}
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='让步接收数量'
label={intl.formatMessage({ id: 'quality.rangbujieshoushuliang', defaultMessage: '让步接收数量' })}
name='concessionToReceiveCount'
>
<InputNumber disabled />
......@@ -213,24 +205,24 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
size={16}
>
<Form.Item
label='批次判定'
label={intl.formatMessage({ id: 'quality.picipanding', defaultMessage: '批次判定' })}
name='batchJudgmentType'
>
<Select disabled>
<Select.Option value={1}>合格</Select.Option>
<Select.Option value={2}>部分合格</Select.Option>
<Select.Option value={3}>让步接收</Select.Option>
<Select.Option value={4}>拒收</Select.Option>
<Select.Option value={1}>{intl.formatMessage({ id: 'quality.hege', defaultMessage: '合格' })}</Select.Option>
<Select.Option value={2}>{intl.formatMessage({ id: 'quality.bufenhege', defaultMessage: '部分合格' })}</Select.Option>
<Select.Option value={3}>{intl.formatMessage({ id: 'quality.rangbujieshou', defaultMessage: '让步接收' })}</Select.Option>
<Select.Option value={4}>{intl.formatMessage({ id: 'quality.jushou', defaultMessage: '拒收' })}</Select.Option>
</Select>
</Form.Item>
<Form.Item
label='允收数量'
label={intl.formatMessage({ id: 'quality.yunshoushuliang', defaultMessage: '允收数量' })}
name='acceptanceCount'
>
<InputNumber disabled />
</Form.Item>
<Form.Item
label='拒收数量'
label={intl.formatMessage({ id: 'quality.jushoushuliang', defaultMessage: '拒收数量' })}
name='rejectCount'
>
<InputNumber disabled />
......@@ -242,7 +234,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
{detection?.inspectionType !== inspectionType.ONE && (
<>
<Space direction='vertical' size={16}>
<div className={styles['vertical']}>不良记录</div>
<div className={styles['vertical']}>{intl.formatMessage({ id: 'quality.buliangjilu', defaultMessage: '不良记录' })}</div>
<Badrecord
rowKey='id'
pagination={false}
......@@ -251,7 +243,7 @@ const DetectionDrawer: React.FC<DetectionDrawerProps> = (props: any) => {
/>
</Space>
<Space direction='vertical' size={16}>
<div className={styles['vertical']}>检验记录</div>
<div className={styles['vertical']}>{intl.formatMessage({ id: 'quality.jianyanjilu', defaultMessage: '检验记录' })}</div>
<Inspectionrecord
rowKey='id'
pagination={false}
......
import React from 'react';
import TableLayout from '@/components/TableLayout';
import { ColumnType } from 'antd/lib/table/interface';
import { createTime, digest, endTime, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, buyerMemberName } from '../../qualityManage/columns';
import { createTime, digest, endTime, outerStatusName, qualityNo, receiveNo, startTime, qualityTypeName, buyerMemberName } from '../../columns';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { Link, history } from 'umi';
import { Link, getIntl } from 'umi';
import { getOrderQualityCollaborateGetQualityOrderCollaboratePage } from '@/services/OrderNewV2Api';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
const QualitySynergySearchTable: React.FC<{}> = () => {
const intl = getIntl();
const columns: ColumnType<any>[] = [
{
...qualityNo,
render: (_text, record) => <Link to={`seach/preview?id=${record?.id}`}>{_text}</Link>
render: (_text, record) => AuthUrl('synergy.preview') ? <Link to={`seach/preview?id=${record?.id}`}>{_text}</Link> : _text
},
{
...digest,
......@@ -55,7 +56,7 @@ const QualitySynergySearchTable: React.FC<{}> = () => {
"x-component": "Search",
"x-mega-props": {},
"x-component-props": {
placeholder: '质检单号',
placeholder: intl.formatMessage({ id: 'quality.zhijiandanhao', defaultMessage: '质检单号' }),
align: "flex-left",
}
}
......@@ -87,20 +88,20 @@ const QualitySynergySearchTable: React.FC<{}> = () => {
digest: {
type: "string",
"x-component-props": {
placeholder: '质检单摘要'
placeholder: intl.formatMessage({ id: 'quality.zhijiandanzhaiyao', defaultMessage: '质检单摘要' })
}
},
buyerMemberName: {
type: "string",
"x-component-props": {
placeholder: '采购商'
placeholder: intl.formatMessage({ id: 'quality.caigoushang', defaultMessage: '采购商' })
}
},
"[startTime,endTime]": {
type: "string",
"x-component": "DateRangePickerUnix",
"x-component-props": {
placeholder: ['质检开始时间', '质检结束时间'],
placeholder: [intl.formatMessage({ id: 'quality.zhijiankaishishijian', defaultMessage: '质检开始时间' }), intl.formatMessage({ id: 'quality.zhijianjieshushijian', defaultMessage: '质检结束时间' })],
showTime: false,
format: 'YYYY-MM-DD'
}
......@@ -113,7 +114,7 @@ const QualitySynergySearchTable: React.FC<{}> = () => {
span: 1
},
"x-component-props": {
children: '查询'
children: intl.formatMessage({ id: 'quality.chaxun', defaultMessage: '查询' })
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment