so模块提交

This commit is contained in:
lj 2025-03-14 17:40:32 +08:00
parent 9baae924a6
commit 3b2d895b24
596 changed files with 78904 additions and 30 deletions

29164
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,272 @@
import {toast} from 'nc-lightapp-front';
const EMPTY_FN = function () {
};
/**
* 对象合并 类似Object.assign();
* @returns 第一个参数对象
*/
const apply = function(){
if(!arguments){
throw new ReferenceError("该方法执行时至少传递一个参数对象!");
}
//参数的长度
let length = arguments.length;
//长度是1 直接返回
if(length == 1){
return arguments[0];
}
//源
let target = arguments[0];
//从第二个元素开始 到 最后一个组成sources
let sources = [...arguments].slice(1);
for(let i = 0;i<sources.length;i++){
//第i个参数
let param = sources[i];
Object.keys(param).forEach(key=>{
//param原型上有该对象或者属性
if(Object.prototype.hasOwnProperty.call(param,key)){
target[key] = param[key];
}
})
}
return target;
}
/**
* 加载单据模板
* props
* cfg:{必输项
* pagecode 必输项 参数模板的参数
* },
* callback(fn): 回调
*/
const loadTemplate = function (props, {pagecode,appcode} = cfg) {
return new Promise(resolve=>{
props.createUIDom(
{
pagecode,
appcode
},
(data) => {
resolve({...data});
}
);
})
};
/**
* 加载多语言
* @param {*} props 必输项
* @param {*} cfg:{
* moduleId: 必输项 应用编码 例如 38211902 @attention 这里是应用编码多语文件的名称也要以应用编码命名
* domainName必输项 领域编码例如 uapbdfigl等等
* }
*/
const loadLang = function (props, {moduleId,domainName} = cfg) {
return new Promise((resolve)=>{
//请求多语
props.MultiInit.getMultiLang(
{
moduleId,
domainName,
callback: (data, success, inlt) => {
if (!success){
toast({content: '加载语言包失败', color: 'warning'});
}
resolve({lang:data,inlt});
}
}
);
})
};
/**
* 加载参照 多个参照一块加载
* @param {*} urls
* 示例[
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* },
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* }
* ]
* @returns
*/
const loadRefer = function (urls = []) {
if(!urls || urls.length == 0){
return Promise.resolve(true);
}
let result = {};
//构造
let loads = (urls.filter((refObj,index)=>{
let {url} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
if(!window[jsname]){
return refObj;
}
})||[]).map((refObj)=>{
return new Promise((resolve,reject)=>{
let {url,name} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
let script = document.createElement('script');
let suffix = url.includes(".")?'':'.js'
script.src = '../../../../' + url+suffix;
script.type = 'text/javascript';
script.onload = () => {
result[name] = window[jsname].default || EMPTY_FN;
resolve(result);
};
script.onerror = () => {
result[name] = undefined;
reject(result);
};
document.body.appendChild(script);
})
});
//Promise 请求全部参照
return Promise.all(loads);
}
/**
* 请求资源
* @param {*} config
* props, 当前应用对象的props
* pagecode, 页面编码
* appcode, 应用编码
* moduleId, 建议使用应用编码
* domainName, 领域编码
* referObjs = [], 参照请求路径集合
* callback = EMPTY_FN 回调
*/
const loadNCCResource = function (config) {
let {
props,
pagecode,
appcode,
moduleId,
domainName,
referObjs = [],
callback = EMPTY_FN
} = config;
//加载参照
loadRefer(referObjs)
.then(()=>{
return Promise.all([
//加载模板
loadTemplate(props,{pagecode,appcode}),
//加载多语
loadLang(props,{moduleId,domainName})
]);
}).then(res=>{
callback({...res[0],...res[1]});
})
};
const isArray = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Array';
};
const isString = function(param) {
return Object.prototype.toString.call(param).slice(8, -1) === 'String';
};
const isObject = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Object';
};
const transferDataWapper = function(datas, grandsonMap){
(isObject(datas)?[datas]:datas || []).forEach((data)=>{
let {head,body,bodys} = data;
head['bodys'] = apply({},(bodys || body || {}));
data['body'] = apply({},(bodys || body || {}));
data['bodys'] = apply({},(bodys || body || {}));
grandsonMap && (data['grandsonMap'] = apply({}, grandsonMap));
})
return datas;
};
const onTransferItemSelectedWrapper = function( func ){
const fetchDataUnWapper = function(datas){
([datas] || []).forEach((data)=>{
let {head,body,bodys} = data;
data['body'] = apply({},body || head['bodys'] || bodys);
data['bodys'] = apply({},body || head['bodys'] || bodys);
})
return datas;
};
return function(record, isComplete, curActiveIndex,status){
func(fetchDataUnWapper(record), isComplete, curActiveIndex,status);
};
};
const onTransferWrapper = function( {props,fetchList}){
let {ncTabs} = fetchList;
let {tabPanes} = ncTabs;
let tables = (tabPanes || []).map(tabPane=>{
let {transferTable,headIdName,bodyIdName} = tabPane;
let {headTableId,bodyTableId,billType} = transferTable;
return {headTableId,bodyTableId,billType,headPkField:headIdName,bodyPkField:bodyIdName};
});
let data = props.transferTable.getTransferTableSelectedValue();
let records = (tables || []).map(table=>{
let {headTableId,bodyTableId,billType,headPkField,bodyPkField} = table;
let transData = data[headTableId];
let records = (transData || []).map(record=>{
let pk = record[headPkField] ? record[headPkField].value : record.head[headTableId].rows[0].values[headPkField].value
let ts = record["ts"] ? record["ts"].value : record.head[headTableId].rows[0].values["ts"].value
let children = (record.body && bodyTableId && bodyTableId.length>0 && record.body[bodyTableId]) ? (record.body[bodyTableId].rows || []).map(row=>{
return {pk:row.values[bodyPkField].value,ts:row.values["ts"].value}
}):[];
return {pk,ts,children};
});
return {billType,records};
});
return records;
};
//float类型数求和
const FloatAdd = function(arg1,arg2){
var r1,r2,m,s1 = arg1.toString(),s2 = arg2.toString();
try{
r1=s1.split(".")[1].length;
}catch(e){
r1=0
}
try{
r2=s2.split(".")[1].length;
}catch(e){
r2=0
}
m=Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;
};
//float类型数乘积
const FloatMultiple = function(f1,f2){
var m=0,s1=f1.toString(),s2=f2.toString();
try{
m+=s1.split(".")[1].length;
}catch(e){
}
try{
m+=s2.split(".")[1].length;
}catch(e){
}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
};
export const Utils = {
loadNCCResource,
loadTemplate,
loadLang,
loadRefer,
apply,
transferDataWapper,
onTransferItemSelectedWrapper,
onTransferWrapper,
FloatAdd,
FloatMultiple
};

View File

@ -0,0 +1,16 @@
{
"dependjs": [
"../../../../uap/common/components/approvalTrans/index.js",
"../../../../uap/common/components/excelImportconfig/index.js",
"../../../../uap/common/components/ExcelOutput/index.js",
"../../../../uap/common/components/ApproveDetail/index.js",
"../../../../uap/common/components/NCUploader/index.js"
],
"dependModuleName": [
"uap/common/components/approvalTrans",
"uap/common/components/excelImportconfig",
"uap/common/components/ExcelOutput",
"uap/common/components/ApproveDetail",
"uap/common/components/NCUploader"
]
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,272 @@
import {toast} from 'nc-lightapp-front';
const EMPTY_FN = function () {
};
/**
* 对象合并 类似Object.assign();
* @returns 第一个参数对象
*/
const apply = function(){
if(!arguments){
throw new ReferenceError("该方法执行时至少传递一个参数对象!");
}
//参数的长度
let length = arguments.length;
//长度是1 直接返回
if(length == 1){
return arguments[0];
}
//源
let target = arguments[0];
//从第二个元素开始 到 最后一个组成sources
let sources = [...arguments].slice(1);
for(let i = 0;i<sources.length;i++){
//第i个参数
let param = sources[i];
Object.keys(param).forEach(key=>{
//param原型上有该对象或者属性
if(Object.prototype.hasOwnProperty.call(param,key)){
target[key] = param[key];
}
})
}
return target;
}
/**
* 加载单据模板
* props
* cfg:{必输项
* pagecode 必输项 参数模板的参数
* },
* callback(fn): 回调
*/
const loadTemplate = function (props, {pagecode,appcode} = cfg) {
return new Promise(resolve=>{
props.createUIDom(
{
pagecode,
appcode
},
(data) => {
resolve({...data});
}
);
})
};
/**
* 加载多语言
* @param {*} props 必输项
* @param {*} cfg:{
* moduleId: 必输项 应用编码 例如 38211902 @attention 这里是应用编码多语文件的名称也要以应用编码命名
* domainName必输项 领域编码例如 uapbdfigl等等
* }
*/
const loadLang = function (props, {moduleId,domainName} = cfg) {
return new Promise((resolve)=>{
//请求多语
props.MultiInit.getMultiLang(
{
moduleId,
domainName,
callback: (data, success, inlt) => {
if (!success){
toast({content: '加载语言包失败', color: 'warning'});
}
resolve({lang:data,inlt});
}
}
);
})
};
/**
* 加载参照 多个参照一块加载
* @param {*} urls
* 示例[
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* },
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* }
* ]
* @returns
*/
const loadRefer = function (urls = []) {
if(!urls || urls.length == 0){
return Promise.resolve(true);
}
let result = {};
//构造
let loads = (urls.filter((refObj,index)=>{
let {url} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
if(!window[jsname]){
return refObj;
}
})||[]).map((refObj)=>{
return new Promise((resolve,reject)=>{
let {url,name} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
let script = document.createElement('script');
let suffix = url.includes(".")?'':'.js'
script.src = '../../../../' + url+suffix;
script.type = 'text/javascript';
script.onload = () => {
result[name] = window[jsname].default || EMPTY_FN;
resolve(result);
};
script.onerror = () => {
result[name] = undefined;
reject(result);
};
document.body.appendChild(script);
})
});
//Promise 请求全部参照
return Promise.all(loads);
}
/**
* 请求资源
* @param {*} config
* props, 当前应用对象的props
* pagecode, 页面编码
* appcode, 应用编码
* moduleId, 建议使用应用编码
* domainName, 领域编码
* referObjs = [], 参照请求路径集合
* callback = EMPTY_FN 回调
*/
const loadNCCResource = function (config) {
let {
props,
pagecode,
appcode,
moduleId,
domainName,
referObjs = [],
callback = EMPTY_FN
} = config;
//加载参照
loadRefer(referObjs)
.then(()=>{
return Promise.all([
//加载模板
loadTemplate(props,{pagecode,appcode}),
//加载多语
loadLang(props,{moduleId,domainName})
]);
}).then(res=>{
callback({...res[0],...res[1]});
})
};
const isArray = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Array';
};
const isString = function(param) {
return Object.prototype.toString.call(param).slice(8, -1) === 'String';
};
const isObject = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Object';
};
const transferDataWapper = function(datas, grandsonMap){
(isObject(datas)?[datas]:datas || []).forEach((data)=>{
let {head,body,bodys} = data;
head['bodys'] = apply({},(bodys || body || {}));
data['body'] = apply({},(bodys || body || {}));
data['bodys'] = apply({},(bodys || body || {}));
grandsonMap && (data['grandsonMap'] = apply({}, grandsonMap));
})
return datas;
};
const onTransferItemSelectedWrapper = function( func ){
const fetchDataUnWapper = function(datas){
([datas] || []).forEach((data)=>{
let {head,body,bodys} = data;
data['body'] = apply({},body || head['bodys'] || bodys);
data['bodys'] = apply({},body || head['bodys'] || bodys);
})
return datas;
};
return function(record, isComplete, curActiveIndex,status){
func(fetchDataUnWapper(record), isComplete, curActiveIndex,status);
};
};
const onTransferWrapper = function( {props,fetchList}){
let {ncTabs} = fetchList;
let {tabPanes} = ncTabs;
let tables = (tabPanes || []).map(tabPane=>{
let {transferTable,headIdName,bodyIdName} = tabPane;
let {headTableId,bodyTableId,billType} = transferTable;
return {headTableId,bodyTableId,billType,headPkField:headIdName,bodyPkField:bodyIdName};
});
let data = props.transferTable.getTransferTableSelectedValue();
let records = (tables || []).map(table=>{
let {headTableId,bodyTableId,billType,headPkField,bodyPkField} = table;
let transData = data[headTableId];
let records = (transData || []).map(record=>{
let pk = record[headPkField] ? record[headPkField].value : record.head[headTableId].rows[0].values[headPkField].value
let ts = record["ts"] ? record["ts"].value : record.head[headTableId].rows[0].values["ts"].value
let children = (record.body && bodyTableId && bodyTableId.length>0 && record.body[bodyTableId]) ? (record.body[bodyTableId].rows || []).map(row=>{
return {pk:row.values[bodyPkField].value,ts:row.values["ts"].value}
}):[];
return {pk,ts,children};
});
return {billType,records};
});
return records;
};
//float类型数求和
const FloatAdd = function(arg1,arg2){
var r1,r2,m,s1 = arg1.toString(),s2 = arg2.toString();
try{
r1=s1.split(".")[1].length;
}catch(e){
r1=0
}
try{
r2=s2.split(".")[1].length;
}catch(e){
r2=0
}
m=Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;
};
//float类型数乘积
const FloatMultiple = function(f1,f2){
var m=0,s1=f1.toString(),s2=f2.toString();
try{
m+=s1.split(".")[1].length;
}catch(e){
}
try{
m+=s2.split(".")[1].length;
}catch(e){
}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
};
export const Utils = {
loadNCCResource,
loadTemplate,
loadLang,
loadRefer,
apply,
transferDataWapper,
onTransferItemSelectedWrapper,
onTransferWrapper,
FloatAdd,
FloatMultiple
};

View File

@ -0,0 +1,605 @@
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
//=============导入高阶组件区=============
//1导入高阶组件,公共部分
import {createPage, base, ajax, high, toast, promptBox, deepClone} from 'nc-lightapp-front';
//2导入高阶组件, UIExtend的部分
import {Utils} from './Utils';
//=============导入基础组件区=============
//1基础组件,公共部分
const {NCDiv, NCAffix, NCTabs, NCScrollElement} = base;
//2导入基础组件. UIExtend部分
//=============基本变量定义区=============
//1 基础常用变量声明部分
const EMPTY_FN = function(){}; //空函数
const URLS = { // 请求路径
loadUrl: '/nccloud/so/Mrckqklr/LoadMrckqklrMasterVOAction.do'
};
const ACTIONS = { // 按钮编码
REFRESH: 'Refresh', //刷新
}
const FIELDS = { // 字段编码
APPROVESTATUS : 'approvestatus',
BILLTYPE : 'billtype',
TRANSTYPEPK: 'transtypepk',
TRANSTYPE: 'transtype',
PRIMARYKEY: 'pk_mrckqklrmaster'
}
//2 编辑模式变量
const EDITMODE_EDIT = 'edit';
const EDITMODE_BROWSE = 'browse';
//3 页面显示模式
//3.1 当前UIExtend需要定义的状态
const SHOWMODE_CARD = 'card';
const CARDTABLE_SUFFIX = 'Sub'; //卡片表格区域编码后缀
const BILLTYPE = 'AA';
/****************************************************************************************************
* 整体介绍
* 目前的这种写法是 单页应用的写法多页面应用页面切换时采用的是安装-卸载的方式体现在render方法
* 目前的这种写法我们不需要再关注this指针的问题,也不需要在调用方法时使用call来切换指针并执行直接"方法()"即可
* 目前的这种写法采用的是MVVM的架构模式把state看做是VM所以我们需要把目光集中在state
*
* 本页面为联查页面如单据联查单据追溯联查
****************************************************************************************************/
export class ApplicationPage extends Component{
/**
* 构造方法,js要求的必须方法,构造整个页面对象
* 此方法构造时会定义全局配置this.config,方便其他方法取用,
* 同时也处理了加载模板,按钮设置模板按钮功能最终通过调用
* pageReady(此方法可以加入你的业务逻辑)完成第一次页面.
* 此方法中,会调用initButton,initMeta来初始化模板和按钮,
* initButton,initMeta,pageReady仅在页面打开时调用一次.
* 其他时候不再调用
*/
constructor(props) {
super(props); //构造
// 节点全局变量定义
//包含 页面编码定义,应用编码定义,标题定义,模块组件名定义
//配置的获取方式,优先取平台定义,其次取传入配置定义, 最后默认
this.config = {
pagecode: props.getSearchParam('p') || props.appcode || 'pagecode未定义', //页面编码定义
appcode: props.getSearchParam('c') || props.appcode || 'appcode未定义', //应用编码定义
title: this.props.getSearchParam('n') || props.title || 'Demo主从表', //表体定义
moduleId: props.appcode, //多语资源目录id
domainName: 'so' //模块域名
}
/**
* 创建state,并构造节点模型,其结构与渲染时是一致的.
* 可参照顶端代码注释的详细解释
*/
this.state = this.createState();
/**
* 适配版本变化,2105及其以后版本必须的调用, 2之前版本不需要
*/
this.props.use.form('MrckqklrMasterForm');
this.props.use.cardTable('MrckqklrSlave0Sub');
/**
* 加载NCC资源,
* 1,包含单据模板,按钮,等平台定义的功能
* 2,加载多语资源文件,
* 3,加载需要在代码总用到参照js
*/
Utils.loadNCCResource({
props: props,
referObjs: [],
/**
* 导入全局配置,加载资源时 appcode,pagecode,modulename等信息,
* 需要用到,全局配置中包含所有它需要用到的参数,
*/
...this.config,
//导入全局配置,
callback: (data) => {
let {context, template, button, lang, refer = {}} = data;
/**
* 初始化模板,修改模板相关配置
* 初始化按钮,修改按钮相关配置,
* 并将模板配置,按钮配置输入到平台,通过setMeta,setButtons输入.
* 让平台进行初始化.当平台初始化完成后,通过then继续后续的工作
*/
template = this.initMeta(template); //更新模板
button = this.initButton(button);
Promise.all([//合并处理 模板 和 多语
new Promise(resolve => this.props.meta.setMeta(template, () => resolve(true))),
new Promise(
resolve => this.props.button.setButtons(button, () => resolve(true)))
]).then(() => {
this.setState({isPageReady: true}, () => { //标记自己页面已经完成,并进行第一次的渲染
(this.pageReady || EMPTY_FN)();
});
}).catch((e) => {
throw new ReferenceError(e);
});
}
});
}
/**
* pageReady方法为页面已经完全设置完毕
* 可以初始化一些初始的功能比如查询下列表并显示数据等
*/
pageReady = () => {
let scene = this.props.getUrlParam("scene");
let id = this.props.getUrlParam("id");
let status = this.props.getUrlParam("status");
let allpks = id instanceof Array ? id:[id];
if(!id){
toast({content: "系统错误未传递联查pk", color: 'danger'});
return;
}
this.state.allpks = allpks;
this.state.currentId = allpks[0];
this.setState(this.state, () => this.queryCardById({id:this.state.currentId}));
}
/**
 * 初始化平台定义的单据模板
 * 触发时机执行loadNCCResource,加载完模板多语等初始化信息之后触发
 * 功能对加载完的模板进行个性化调整
 * 可实现举例功能:
 * 1.参照表单联动过滤, 参见[Demo1] 
 * 2.处理表格操作列,   参见[Demo2]
 */
initMeta = (meta) => {
// 添加卡片行操作列
meta['MrckqklrSlave0Sub'].items.push({
attrcode: 'opr', // 列标识, 固定
itemtype:'customer', // 列类型, 固定
label: '操作', // 列名
width: 200, // 列宽度
className : 'table-opr', // 样式
fixed: 'right', // 悬浮方向
visible: true, // 是否可见
render: (text, record, index) => { // 渲染方法
let {showmode, editmode, card: {copiedRows}} = this.state;
//获得符合条件按钮的key编码的集合
let oprButtons = [];
if (editmode != EDITMODE_BROWSE) {
oprButtons.push('MrckqklrSlave0_Opr_DelLine');
oprButtons.push('MrckqklrSlave0_Opr_CopyLine');
}
oprButtons.push('MrckqklrSlave0_Opr_ExpandLine');
if (editmode != EDITMODE_BROWSE && copiedRows['MrckqklrSlave0Sub']) {
oprButtons = ['MrckqklrSlave0_Opr_PastNextLine'];
}
// 创建操作列API
return this.props.button.createOprationButton(oprButtons, {
area: 'MrckqklrSlave0_Opr', // 按钮区域编码
buttonLimit: 3, // 允许的按钮最多显示数量
onButtonClick: (props, btncode) => this.onBtnClickFormlist(props, btncode, 'MrckqklrSlave0Sub', {data: record, index}) // 点击按钮
});
}
});
// 交易类型参照过滤
meta['MrckqklrMasterForm'].items.find(item => item.attrcode == FIELDS.TRANSTYPEPK).queryCondition = () => ({
parentbilltype: BILLTYPE
});
return meta;
}
/**
* initButton方法 功能介绍
* 触发时机执行loadNCCResource,加载完模板多语等初始化信息之后触发
* 功能简介对加载完的按钮数据进行个性化调整
* 举例功能
* 1禁用某按钮 参见Demo1
*/
initButton = (button) => {
/**
* Demo1 处理按钮
* 场景描述 有时需要在按钮数据加载之后进行一些处理
* 达成效果 按钮不可见并且禁用
* 写法解释 迭代所有按钮找到Save按钮设置按钮的可见性和禁用型
* 代码示例:
*/
//buttons.find(btn=>{//迭代buttons
//  if(btn.key == 'Save'){//找到button的key为Save的按钮
//      btn.disabled = true;//设置按钮禁用
//      btn.visible = false;//设置按钮隐藏
//  }
//})
return button;
}
/**
* 创建state模型具体方法功能介绍参考主应用里面的注释介绍
*/
createState = () => {
let state = {
scene : 'link',
currentId : '',
allpks : [],//所有联查的pk
isPageReady: false, // 页面是否可以渲染
showmode: SHOWMODE_CARD, // 页面当前的显示模型
editmode: EDITMODE_BROWSE, // 页面当前编辑模式
head: { // 节点标题栏
title: this.config.title, // 标题
initShowBackBtn: false, // 是否显示返回按钮
},
headBtn: { // 头部按钮区
area: 'common', // 区域编码
onButtonClick: this.onBtnClickHead // 点击按钮
},
card: { // 卡片页面
form: { // 表单
area: 'MrckqklrMasterForm', // 区域编码
onBeforeEvent: this.onBeforeEditForm, // 编辑前事件
onAfterEvent: this.onAfterEditForm, // 编辑后事件
},
tabs: {
activeKey: 'MrckqklrSlave0Sub',
onTabClick: (key) => {
this.state.card.tabs.activeKey = key;
this.setState(this.state);
},
tabPanes: [
{
key: 'MrckqklrSlave0Sub',
name: '子实体0',
}
]
},
formlist: { // 子表表格
'MrckqklrSlave0Sub'/*区域编码*/: {
area: 'MrckqklrSlave0Sub', // 区域编码
showIndex: true, // 是否显示行序号
showCheck: true, // 是否显示多选框
adaptionHeight: true, // 是否自适应浏览器高度
onAfterEvent: this.onAfterEditFormlist, // 编辑后事件
onBeforeEvent: this.onBeforeEditFormlist, // 编辑前事件
onSelected: this.onSelectedChangeFormlist, // 点击选择框
onSelectedAll: this.onSelectedChangeFormlist, // 点击全选框
selectedChange: this.onSelectedChangeFormlist, // 选择框的选中行改变
hideModelSave: true,//隐藏整单保存按钮
hideAdd:true,//隐藏侧拉增行按钮
hideDel:true,//隐藏侧拉删行按钮
tableHead: () => this.state.card.formlist['MrckqklrSlave0Sub'].button.render(), // 肩部渲染,主要用于渲染肩部操作按钮,调用肩部按钮的渲染方法
button: { // 肩部按钮
area: 'MrckqklrSlave0', // 区域编码
onButtonClick: (props, btnCode) => this.onBtnClickFormlist(props, btnCode, 'MrckqklrSlave0Sub'), // 点击按钮
render: () => { // 渲染方法
return (
<div className="shoulder-definition-area">
<div className="btn-group">
{/*按钮*/}
{this.props.button.createButtonApp(this.state.card.formlist['MrckqklrSlave0Sub'].button)}
</div>
</div>
);
}
},
}
},
copiedRows: {},
cardPagniation: { // 翻页组件
visible: false, // 是否显示
handlePageInfoChange: this.onBtnClickCardPagniation // 点击翻页器按钮
}
}
};
return state;
}
//4 渲染方法
render() {
let {isPageReady, showmode, head, headBtn, list, card} = this.state;
if(!isPageReady) return ''; //页面资源加载完成后才能渲染页面
// 渲染卡片
const renderCardPage = () => {
let {form, tabs, formlist, cardPagniation} = card;
let {tabPanes, ...tabOthers} = tabs;
if (showmode != SHOWMODE_CARD) {
return '';
}
// cardtable存在bug拷贝使用的是Object.assign()会修改当前state
let newFormlist = deepClone(formlist);
let {'MrckqklrSlave0Sub' : tableConfig, ...other} = newFormlist;
return showmode == SHOWMODE_CARD ? (
<div className='nc-bill-card'>
<div className="nc-bill-top-area">
<NCAffix>
<NCDiv areaCode={NCDiv.config.HEADER} className='nc-bill-header-area'>
<NCDiv areaCode={NCDiv.config.Title} className='header-title-search-area'>
{this.props.BillHeadInfo.createBillHeadInfo(head)}
</NCDiv>
<div className="header-button-area">
{this.props.button.createButtonApp(headBtn)}
</div>
<NCDiv areaCode={NCDiv.config.TABS} className='header-cardPagination-area' style={cardPagniation.visible ? {} : {display: 'none'}}>
{this.props.cardPagination.createCardPagination(cardPagniation)}
</NCDiv>
</NCDiv>
</NCAffix>
<NCDiv areaCode={NCDiv.config.FORM} className="nc-bill-form-area">
{this.props.form.createForm(form.area, form)}
</NCDiv>
</div>
<div className="nc-bill-bottom-area">
<NCDiv areaCode={NCDiv.config.TABLE} className="nc-bill-table-area">
{/* {this.props.cardTable.createCardTable(tableConfig.area, {...tableConfig, multiConfig: other})} */}
</NCDiv>
</div>
</div>
) : '';
};
return [ renderCardPage()];
}//render
//=============功能性方法区=============
// 修改按钮状态
// callback 回调
updateBtnStatus = ({callback = EMPTY_FN} = {}) => {
let {showmode, editmode, card: {formlist, copiedRows}} = this.state;
let isBrowse = editmode == EDITMODE_BROWSE;
// 按钮可见性初始化
let btnVisible = {
[ACTIONS.REFRESH]: isBrowse,
}
let btnDisabled = {
[ACTIONS.REFRESH]: false,
}
let formlistBtnArea = Object.values(formlist).map(table => table.button.area);
formlistBtnArea.forEach(btnAreaCode => {
// 卡片子表按钮可见性
let copymode = Boolean(copiedRows[btnAreaCode + CARDTABLE_SUFFIX]);
btnVisible[btnAreaCode + '_AddLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_CopyLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_DelLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_PastEndLine'] = !isBrowse && copymode;
btnVisible[btnAreaCode + '_CopyCancelLine'] = !isBrowse && copymode;
// 卡片子表按钮可用性
let cardTableCheckedRows = this.props.cardTable.getCheckedRows(btnAreaCode+CARDTABLE_SUFFIX);
btnDisabled[btnAreaCode + '_AddLine'] = false;
btnDisabled[btnAreaCode + '_CopyLine'] = !(cardTableCheckedRows && cardTableCheckedRows.length > 0);
btnDisabled[btnAreaCode + '_DelLine'] = !(cardTableCheckedRows && cardTableCheckedRows.length > 0);
btnDisabled[btnAreaCode + '_PastEndLine'] = false;
btnDisabled[btnAreaCode + '_CopyCancelLine'] = false;
});
this.props.button.setButtonVisible(btnVisible);
this.props.button.setButtonDisabled(btnDisabled);
// 设置卡片翻页器是否可见
this.state.card.cardPagniation.visible = editmode == EDITMODE_BROWSE;
this.setState(this.state, callback);
}
updateCardStatus = ({areaInfo, editmode, callback = EMPTY_FN} = {}) => {
// 设置卡片主表单为编辑态
this.props.form.setFormStatus(areaInfo.formId, editmode);
// 设置卡片子表表格为编辑态
areaInfo.tableId.forEach(id => {
this.props.cardTable.setStatus(id, editmode == EDITMODE_BROWSE ? EDITMODE_BROWSE : EDITMODE_EDIT);
});
setTimeout(callback, 0);
}
// 查询卡片数据
// data 查询参数
// callback 回调
queryCard = ({data, callback = EMPTY_FN} = {}) => {
// pk pageCode formId 不能为空
if (!(data && data.pk && data.pageCode && data.formId)) {
return;
}
// 查询请求
ajax({
url: URLS.loadUrl,
data: data,
success: (res) => {
let {data: {data} = {}} = res;
callback(data);
},
});
}
/**
*根据参数id查询数据填充数据
*减少重复代码
*/
queryCardById = ({id,callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 调用卡片查询方法,通过回调处理查询结果
this.queryCard({
data: { // 查询参数
pageCode: this.config.pagecode, // pagecode
pk: id, // 主键
...area // 卡片区域编码
},
callback: (data) => { // data为查询结果
// 填充卡片数据或清空卡片数据
data ? this.fillCardData({data}) : this.clearCardData();
// 更新按钮状态
this.updateBtnStatus();
callback();
}
});
}
// 填充卡片数据
// data 卡片数据格式参考后端ExtBillCard类
// callback 回调,无参数
fillCardData = ({data, callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 设置主表单数据
this.props.form.setFormItemsValue(area.formId, data && data.head && data.head[area.formId] && data.head[area.formId].rows[0].values || {});
// 设置子表表格数据
area.tableId.forEach(id => {
if (data && data.bodys && data.bodys[id]) {
this.props.cardTable.setTableData(id, data.bodys[id], () => {
});
} else { // 子表没值则清空
this.props.cardTable.setTableData(id, {rows: []});
}
});
setTimeout(callback);
}
// 清空卡片数据
// callback 回调,无参数
clearCardData = ({callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 清空主表单数据
this.props.form.EmptyAllFormValue(area.formId);
// 清空子表表格数据
area.tableId.forEach(id => {
this.props.cardTable.setTableData(id, {rows: []});
});
setTimeout(callback);
}
// 初始化卡片翻页器
initCardPaginationWithAllpks = () => {
let {allpks} = this.state.allpks;
// 设置卡片翻页器的allpks当调用cardPagination组件的API新增、删除pk时allpks会同步更新
this.props.cardPagination.setCardPaginationAllpks(allpks);
}
// 获取卡片数据
getCardData = () => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 获取卡片界面数据(主表单、子表表格)
let cardData = this.props.createExtCardData(this.config.pagecode, area.formId, area.tableId);
return cardData;
}
// 获取卡片区域编码包括主表单formId子表格tableId单表时没有tableId
// 返回格式:{formId: '', tableId: ['']}
getCardAreaCode = () => {
return {
tableId: Object.keys(this.state.card.formlist),
formId: this.state.card.form.area
}
}
/**
* 按钮点击事件
* @param props
* @param btnCode 按钮id
* @param param 列表操作列参数适配操作列按钮
*/
onBtnClickHead = (props, btnCode, param = {}) => {
switch (btnCode) {
case ACTIONS.REFRESH: // 点击刷新
this.onRefresh();
break;
default:
break;
}
}
/**
* 点击刷新按钮
*/
onRefresh = () => {
// 获取主键
let billId = this.state.currentId;
this.queryCardById({id:billId,callback:()=>{
// 提示
toast({color: 'success', content: '刷新成功'});
}});
}
/**
* 卡片翻页
* @param props
* @param nextId 下一个单据id
*/
onBtnClickCardPagniation = (props, nextId) => {
this.setState({currentId:nextId},this.queryCardById({id:nextId}));
}
/**
* 方法功能
* 卡片子表表肩按钮事件
* @param props
* @param btnCode 按钮id
* @param tableId 表格id
*/
onBtnClickFormlist = (props, btnCode, tableId, row) => {
// 卡片子表表肩符合以_AddLine结尾的规范根据后缀判断时什么按钮
let code = btnCode.split('_');
switch (code[code.length - 1]) {
case 'ExpandLine':
case 'RetractLine':
this.onCardTableExpandLine(tableId, row);
break;
default:
break;
}
}
/**
* 方法功能
* 卡片孙表选择框发生改变事件
*/
onSelectedChangeGrandson = () => {
// 更新按钮状态
this.updateBtnStatus();
}
/**
*子表展开
*/
onCardTableExpandLine = (tableId, row) => {
let {editmode} = this.state;
let status = editmode == EDITMODE_BROWSE ? EDITMODE_BROWSE : EDITMODE_EDIT;
this.props.cardTable.openModel(tableId, status, row.data, row.index);
}
}
const config = {
title: '每日出库情况录入联查',
pagecode: '400600424L_MrckqklrMasterL',
appcode: '400600424L',
domainName: 'so',
version: 2207
};
ApplicationPage = createPage({
initTemplate:{},
billinfo: {
billtype: 'extcard',
pagecode: '400600424L_MrckqklrMasterL',
headcode: 'MrckqklrMasterForm',
bodycode: ['MrckqklrSlave0Sub']
}
})(ApplicationPage);
ReactDOM.render(<ApplicationPage {...config}/>, document.querySelector("#app"));

View File

@ -0,0 +1,272 @@
import {toast} from 'nc-lightapp-front';
const EMPTY_FN = function () {
};
/**
* 对象合并 类似Object.assign();
* @returns 第一个参数对象
*/
const apply = function(){
if(!arguments){
throw new ReferenceError("该方法执行时至少传递一个参数对象!");
}
//参数的长度
let length = arguments.length;
//长度是1 直接返回
if(length == 1){
return arguments[0];
}
//源
let target = arguments[0];
//从第二个元素开始 到 最后一个组成sources
let sources = [...arguments].slice(1);
for(let i = 0;i<sources.length;i++){
//第i个参数
let param = sources[i];
Object.keys(param).forEach(key=>{
//param原型上有该对象或者属性
if(Object.prototype.hasOwnProperty.call(param,key)){
target[key] = param[key];
}
})
}
return target;
}
/**
* 加载单据模板
* props
* cfg:{必输项
* pagecode 必输项 参数模板的参数
* },
* callback(fn): 回调
*/
const loadTemplate = function (props, {pagecode,appcode} = cfg) {
return new Promise(resolve=>{
props.createUIDom(
{
pagecode,
appcode
},
(data) => {
resolve({...data});
}
);
})
};
/**
* 加载多语言
* @param {*} props 必输项
* @param {*} cfg:{
* moduleId: 必输项 应用编码 例如 38211902 @attention 这里是应用编码多语文件的名称也要以应用编码命名
* domainName必输项 领域编码例如 uapbdfigl等等
* }
*/
const loadLang = function (props, {moduleId,domainName} = cfg) {
return new Promise((resolve)=>{
//请求多语
props.MultiInit.getMultiLang(
{
moduleId,
domainName,
callback: (data, success, inlt) => {
if (!success){
toast({content: '加载语言包失败', color: 'warning'});
}
resolve({lang:data,inlt});
}
}
);
})
};
/**
* 加载参照 多个参照一块加载
* @param {*} urls
* 示例[
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* },
* {
* url:'uapbd/refer/supplier/SupplierClassTreeRef/index',
* name:'uapbd/refer/supplier/SupplierClassTreeRef/index'
* }
* ]
* @returns
*/
const loadRefer = function (urls = []) {
if(!urls || urls.length == 0){
return Promise.resolve(true);
}
let result = {};
//构造
let loads = (urls.filter((refObj,index)=>{
let {url} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
if(!window[jsname]){
return refObj;
}
})||[]).map((refObj)=>{
return new Promise((resolve,reject)=>{
let {url,name} = refObj;
let jsname = url.includes(".")?url.substring(0, url.length - 3):url;
let script = document.createElement('script');
let suffix = url.includes(".")?'':'.js'
script.src = '../../../../' + url+suffix;
script.type = 'text/javascript';
script.onload = () => {
result[name] = window[jsname].default || EMPTY_FN;
resolve(result);
};
script.onerror = () => {
result[name] = undefined;
reject(result);
};
document.body.appendChild(script);
})
});
//Promise 请求全部参照
return Promise.all(loads);
}
/**
* 请求资源
* @param {*} config
* props, 当前应用对象的props
* pagecode, 页面编码
* appcode, 应用编码
* moduleId, 建议使用应用编码
* domainName, 领域编码
* referObjs = [], 参照请求路径集合
* callback = EMPTY_FN 回调
*/
const loadNCCResource = function (config) {
let {
props,
pagecode,
appcode,
moduleId,
domainName,
referObjs = [],
callback = EMPTY_FN
} = config;
//加载参照
loadRefer(referObjs)
.then(()=>{
return Promise.all([
//加载模板
loadTemplate(props,{pagecode,appcode}),
//加载多语
loadLang(props,{moduleId,domainName})
]);
}).then(res=>{
callback({...res[0],...res[1]});
})
};
const isArray = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Array';
};
const isString = function(param) {
return Object.prototype.toString.call(param).slice(8, -1) === 'String';
};
const isObject = function(param){
return Object.prototype.toString.call(param).slice(8, -1) === 'Object';
};
const transferDataWapper = function(datas, grandsonMap){
(isObject(datas)?[datas]:datas || []).forEach((data)=>{
let {head,body,bodys} = data;
head['bodys'] = apply({},(bodys || body || {}));
data['body'] = apply({},(bodys || body || {}));
data['bodys'] = apply({},(bodys || body || {}));
grandsonMap && (data['grandsonMap'] = apply({}, grandsonMap));
})
return datas;
};
const onTransferItemSelectedWrapper = function( func ){
const fetchDataUnWapper = function(datas){
([datas] || []).forEach((data)=>{
let {head,body,bodys} = data;
data['body'] = apply({},body || head['bodys'] || bodys);
data['bodys'] = apply({},body || head['bodys'] || bodys);
})
return datas;
};
return function(record, isComplete, curActiveIndex,status){
func(fetchDataUnWapper(record), isComplete, curActiveIndex,status);
};
};
const onTransferWrapper = function( {props,fetchList}){
let {ncTabs} = fetchList;
let {tabPanes} = ncTabs;
let tables = (tabPanes || []).map(tabPane=>{
let {transferTable,headIdName,bodyIdName} = tabPane;
let {headTableId,bodyTableId,billType} = transferTable;
return {headTableId,bodyTableId,billType,headPkField:headIdName,bodyPkField:bodyIdName};
});
let data = props.transferTable.getTransferTableSelectedValue();
let records = (tables || []).map(table=>{
let {headTableId,bodyTableId,billType,headPkField,bodyPkField} = table;
let transData = data[headTableId];
let records = (transData || []).map(record=>{
let pk = record[headPkField] ? record[headPkField].value : record.head[headTableId].rows[0].values[headPkField].value
let ts = record["ts"] ? record["ts"].value : record.head[headTableId].rows[0].values["ts"].value
let children = (record.body && bodyTableId && bodyTableId.length>0 && record.body[bodyTableId]) ? (record.body[bodyTableId].rows || []).map(row=>{
return {pk:row.values[bodyPkField].value,ts:row.values["ts"].value}
}):[];
return {pk,ts,children};
});
return {billType,records};
});
return records;
};
//float类型数求和
const FloatAdd = function(arg1,arg2){
var r1,r2,m,s1 = arg1.toString(),s2 = arg2.toString();
try{
r1=s1.split(".")[1].length;
}catch(e){
r1=0
}
try{
r2=s2.split(".")[1].length;
}catch(e){
r2=0
}
m=Math.pow(10,Math.max(r1,r2));
return (arg1*m+arg2*m)/m;
};
//float类型数乘积
const FloatMultiple = function(f1,f2){
var m=0,s1=f1.toString(),s2=f2.toString();
try{
m+=s1.split(".")[1].length;
}catch(e){
}
try{
m+=s2.split(".")[1].length;
}catch(e){
}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
};
export const Utils = {
loadNCCResource,
loadTemplate,
loadLang,
loadRefer,
apply,
transferDataWapper,
onTransferItemSelectedWrapper,
onTransferWrapper,
FloatAdd,
FloatMultiple
};

View File

@ -0,0 +1,598 @@
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
//=============导入高阶组件区=============
//1导入高阶组件,公共部分
import {createPage, base, ajax, high, toast, promptBox, deepClone} from 'nc-lightapp-front';
//2导入高阶组件, UIExtend的部分
import {Utils} from './Utils';
//=============导入基础组件区=============
//1基础组件,公共部分
const {NCDiv, NCAffix, NCTabs, NCScrollElement} = base;
//2导入基础组件. UIExtend部分
//=============基本变量定义区=============
//1 基础常用变量声明部分
const EMPTY_FN = function(){}; //空函数
const URLS = { // 请求路径
loadUrl: '/nccloud/so/Mrckqklr/LoadMrckqklrMasterVOAction.do'
};
const ACTIONS = { // 按钮编码
REFRESH: 'Refresh', //刷新
}
const FIELDS = { // 字段编码
APPROVESTATUS : 'approvestatus',
BILLTYPE : 'billtype',
TRANSTYPEPK: 'transtypepk',
TRANSTYPE: 'transtype',
PRIMARYKEY: 'pk_mrckqklrmaster'
}
//2 编辑模式变量
const EDITMODE_EDIT = 'edit';
const EDITMODE_BROWSE = 'browse';
//3 页面显示模式
//3.1 当前UIExtend需要定义的状态
const SHOWMODE_CARD = 'card';
const CARDTABLE_SUFFIX = 'Sub'; //卡片表格区域编码后缀
const BILLTYPE = 'AA';
/****************************************************************************************************
* 整体介绍
* 目前的这种写法是 单页应用的写法多页面应用页面切换时采用的是安装-卸载的方式体现在render方法
* 目前的这种写法我们不需要再关注this指针的问题,也不需要在调用方法时使用call来切换指针并执行直接"方法()"即可
* 目前的这种写法采用的是MVVM的架构模式把state看做是VM所以我们需要把目光集中在state
*
* 本页面为审批中心详情页面
****************************************************************************************************/
export class ApplicationPage extends Component{
/**
* 构造方法,js要求的必须方法,构造整个页面对象
* 此方法构造时会定义全局配置this.config,方便其他方法取用,
* 同时也处理了加载模板,按钮设置模板按钮功能最终通过调用
* pageReady(此方法可以加入你的业务逻辑)完成第一次页面.
* 此方法中,会调用initButton,initMeta来初始化模板和按钮,
* initButton,initMeta,pageReady仅在页面打开时调用一次.
* 其他时候不再调用
*/
constructor(props) {
super(props); //构造
// 节点全局变量定义
//包含 页面编码定义,应用编码定义,标题定义,模块组件名定义
//配置的获取方式,优先取平台定义,其次取传入配置定义, 最后默认
this.config = {
pagecode: props.getSearchParam('p') || props.appcode || 'pagecode未定义', //页面编码定义
appcode: props.getSearchParam('c') || props.appcode || 'appcode未定义', //应用编码定义
title: this.props.getSearchParam('n') || props.title || 'Demo主从表', //表体定义
moduleId: props.appcode, //多语资源目录id
domainName: 'so' //模块域名
}
/**
* 创建state,并构造节点模型,其结构与渲染时是一致的.
* 可参照顶端代码注释的详细解释
*/
this.state = this.createState();
/**
* 适配版本变化,2105及其以后版本必须的调用, 2之前版本不需要
*/
this.props.use.form('MrckqklrMasterForm');
this.props.use.cardTable('MrckqklrSlave0Sub');
/**
* 加载NCC资源,
* 1,包含单据模板,按钮,等平台定义的功能
* 2,加载多语资源文件,
* 3,加载需要在代码总用到参照js
*/
Utils.loadNCCResource({
props: props,
referObjs: [],
/**
* 导入全局配置,加载资源时 appcode,pagecode,modulename等信息,
* 需要用到,全局配置中包含所有它需要用到的参数,
*/
...this.config,
//导入全局配置,
callback: (data) => {
let {context, template, button, lang, refer = {}} = data;
/**
* 初始化模板,修改模板相关配置
* 初始化按钮,修改按钮相关配置,
* 并将模板配置,按钮配置输入到平台,通过setMeta,setButtons输入.
* 让平台进行初始化.当平台初始化完成后,通过then继续后续的工作
*/
template = this.initMeta(template); //更新模板
button = this.initButton(button);
Promise.all([//合并处理 模板 和 多语
new Promise(resolve => this.props.meta.setMeta(template, () => resolve(true))),
new Promise(
resolve => this.props.button.setButtons(button, () => resolve(true)))
]).then(() => {
this.setState({isPageReady: true}, () => { //标记自己页面已经完成,并进行第一次的渲染
(this.pageReady || EMPTY_FN)();
});
}).catch((e) => {
throw new ReferenceError(e);
});
}
});
}
/**
* pageReady方法为页面已经完全设置完毕
* 可以初始化一些初始的功能比如查询下列表并显示数据等
*/
pageReady = () => {
let scene = this.props.getUrlParam("scene");
let id = this.props.getUrlParam("id");
let status = this.props.getUrlParam("status");
let allpks = id instanceof Array ? id:[id];
if(!id){
toast({content: "系统错误未传递联查pk", color: 'danger'});
return;
}
this.state.allpks = allpks;
this.state.currentId = allpks[0];
this.setState(this.state, () => this.queryCardById({id:this.state.currentId}));
}
/**
 * 初始化平台定义的单据模板
 * 触发时机执行loadNCCResource,加载完模板多语等初始化信息之后触发
 * 功能对加载完的模板进行个性化调整
 * 可实现举例功能:
 * 1.参照表单联动过滤, 参见[Demo1] 
 * 2.处理表格操作列,   参见[Demo2]
 */
initMeta = (meta) => {
// 添加卡片行操作列
meta['MrckqklrSlave0Sub'].items.push({
attrcode: 'opr', // 列标识, 固定
itemtype:'customer', // 列类型, 固定
label: '操作', // 列名
width: 200, // 列宽度
className : 'table-opr', // 样式
fixed: 'right', // 悬浮方向
visible: true, // 是否可见
render: (text, record, index) => { // 渲染方法
let {showmode, editmode, card: {copiedRows}} = this.state;
//获得符合条件按钮的key编码的集合
let oprButtons = [];
if (editmode != EDITMODE_BROWSE) {
oprButtons.push('MrckqklrSlave0_Opr_DelLine');
oprButtons.push('MrckqklrSlave0_Opr_CopyLine');
}
oprButtons.push('MrckqklrSlave0_Opr_ExpandLine');
if (editmode != EDITMODE_BROWSE && copiedRows['MrckqklrSlave0Sub']) {
oprButtons = ['MrckqklrSlave0_Opr_PastNextLine'];
}
// 创建操作列API
return this.props.button.createOprationButton(oprButtons, {
area: 'MrckqklrSlave0_Opr', // 按钮区域编码
buttonLimit: 3, // 允许的按钮最多显示数量
onButtonClick: (props, btncode) => this.onBtnClickFormlist(props, btncode, 'MrckqklrSlave0Sub', {data: record, index}) // 点击按钮
});
}
});
// 交易类型参照过滤
meta['MrckqklrMasterForm'].items.find(item => item.attrcode == FIELDS.TRANSTYPEPK).queryCondition = () => ({
parentbilltype: BILLTYPE
});
return meta;
}
/**
* initButton方法 功能介绍
* 触发时机执行loadNCCResource,加载完模板多语等初始化信息之后触发
* 功能简介对加载完的按钮数据进行个性化调整
* 举例功能
* 1禁用某按钮 参见Demo1
*/
initButton = (button) => {
/**
* Demo1 处理按钮
* 场景描述 有时需要在按钮数据加载之后进行一些处理
* 达成效果 按钮不可见并且禁用
* 写法解释 迭代所有按钮找到Save按钮设置按钮的可见性和禁用型
* 代码示例:
*/
//buttons.find(btn=>{//迭代buttons
//  if(btn.key == 'Save'){//找到button的key为Save的按钮
//      btn.disabled = true;//设置按钮禁用
//      btn.visible = false;//设置按钮隐藏
//  }
//})
return button;
}
/**
* 创建state模型具体方法功能介绍参考主应用里面的注释介绍
*/
createState = () => {
let state = {
scene : 'link',
currentId : '',
allpks : [],//所有联查的pk
isPageReady: false, // 页面是否可以渲染
showmode: SHOWMODE_CARD, // 页面当前的显示模型
editmode: EDITMODE_BROWSE, // 页面当前编辑模式
headBtn: { // 头部按钮区
area: 'common', // 区域编码
onButtonClick: this.onBtnClickHead // 点击按钮
},
card: { // 卡片页面
form: { // 表单
area: 'MrckqklrMasterForm', // 区域编码
onBeforeEvent: this.onBeforeEditForm, // 编辑前事件
onAfterEvent: this.onAfterEditForm, // 编辑后事件
},
tabs: {
activeKey: 'MrckqklrSlave0Sub',
onTabClick: (key) => {
this.state.card.tabs.activeKey = key;
this.setState(this.state);
},
tabPanes: [
{
key: 'MrckqklrSlave0Sub',
name: '子实体0',
}
]
},
formlist: { // 子表表格
'MrckqklrSlave0Sub'/*区域编码*/: {
area: 'MrckqklrSlave0Sub', // 区域编码
showIndex: true, // 是否显示行序号
showCheck: true, // 是否显示多选框
adaptionHeight: true, // 是否自适应浏览器高度
onAfterEvent: this.onAfterEditFormlist, // 编辑后事件
onBeforeEvent: this.onBeforeEditFormlist, // 编辑前事件
onSelected: this.onSelectedChangeFormlist, // 点击选择框
onSelectedAll: this.onSelectedChangeFormlist, // 点击全选框
selectedChange: this.onSelectedChangeFormlist, // 选择框的选中行改变
hideModelSave: true,//隐藏整单保存按钮
hideAdd:true,//隐藏侧拉增行按钮
hideDel:true,//隐藏侧拉删行按钮
tableHead: () => this.state.card.formlist['MrckqklrSlave0Sub'].button.render(), // 肩部渲染,主要用于渲染肩部操作按钮,调用肩部按钮的渲染方法
button: { // 肩部按钮
area: 'MrckqklrSlave0', // 区域编码
onButtonClick: (props, btnCode) => this.onBtnClickFormlist(props, btnCode, 'MrckqklrSlave0Sub'), // 点击按钮
render: () => { // 渲染方法
return (
<div className="shoulder-definition-area">
<div className="btn-group">
{/*按钮*/}
{this.props.button.createButtonApp(this.state.card.formlist['MrckqklrSlave0Sub'].button)}
</div>
</div>
);
}
},
}
},
copiedRows: {},
cardPagniation: { // 翻页组件
visible: false, // 是否显示
handlePageInfoChange: this.onBtnClickCardPagniation // 点击翻页器按钮
}
}
};
return state;
}
//4 渲染方法
render() {
let {isPageReady, showmode, head, headBtn, list, card} = this.state;
if(!isPageReady) return ''; //页面资源加载完成后才能渲染页面
// 渲染卡片
const renderCardPage = () => {
let {form, tabs, formlist, cardPagniation} = card;
let {tabPanes, ...tabOthers} = tabs;
if (showmode != SHOWMODE_CARD) {
return '';
}
// cardtable存在bug拷贝使用的是Object.assign()会修改当前state
let newFormlist = deepClone(formlist);
let {'MrckqklrSlave0Sub' : tableConfig, ...other} = newFormlist;
return showmode == SHOWMODE_CARD ? (
<div className='nc-bill-card'>
<div className="nc-bill-top-area">
<NCAffix>
<NCDiv areaCode={NCDiv.config.HEADER} className='nc-bill-header-area'>
<div className="header-button-area">
{this.props.button.createButtonApp(headBtn)}
</div>
<NCDiv areaCode={NCDiv.config.TABS} className='header-cardPagination-area' style={cardPagniation.visible ? {} : {display: 'none'}}>
{this.props.cardPagination.createCardPagination(cardPagniation)}
</NCDiv>
</NCDiv>
</NCAffix>
<NCDiv areaCode={NCDiv.config.FORM} className="nc-bill-form-area">
{this.props.form.createForm(form.area, form)}
</NCDiv>
</div>
<div className="nc-bill-bottom-area">
<NCDiv areaCode={NCDiv.config.TABLE} className="nc-bill-table-area">
{/* {this.props.cardTable.createCardTable(tableConfig.area, {...tableConfig, multiConfig: other})} */}
</NCDiv>
</div>
</div>
) : '';
};
return [ renderCardPage()];
}//render
//=============功能性方法区=============
// 修改按钮状态
// callback 回调
updateBtnStatus = ({callback = EMPTY_FN} = {}) => {
let {showmode, editmode, card: {formlist, copiedRows}} = this.state;
let isBrowse = editmode == EDITMODE_BROWSE;
// 按钮可见性初始化
let btnVisible = {
[ACTIONS.REFRESH]: isBrowse,
}
let btnDisabled = {
[ACTIONS.REFRESH]: false,
}
let formlistBtnArea = Object.values(formlist).map(table => table.button.area);
formlistBtnArea.forEach(btnAreaCode => {
// 卡片子表按钮可见性
let copymode = Boolean(copiedRows[btnAreaCode + CARDTABLE_SUFFIX]);
btnVisible[btnAreaCode + '_AddLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_CopyLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_DelLine'] = !isBrowse && !copymode;
btnVisible[btnAreaCode + '_PastEndLine'] = !isBrowse && copymode;
btnVisible[btnAreaCode + '_CopyCancelLine'] = !isBrowse && copymode;
// 卡片子表按钮可用性
let cardTableCheckedRows = this.props.cardTable.getCheckedRows(btnAreaCode+CARDTABLE_SUFFIX);
btnDisabled[btnAreaCode + '_AddLine'] = false;
btnDisabled[btnAreaCode + '_CopyLine'] = !(cardTableCheckedRows && cardTableCheckedRows.length > 0);
btnDisabled[btnAreaCode + '_DelLine'] = !(cardTableCheckedRows && cardTableCheckedRows.length > 0);
btnDisabled[btnAreaCode + '_PastEndLine'] = false;
btnDisabled[btnAreaCode + '_CopyCancelLine'] = false;
});
this.props.button.setButtonVisible(btnVisible);
this.props.button.setButtonDisabled(btnDisabled);
// 设置卡片翻页器是否可见
this.state.card.cardPagniation.visible = editmode == EDITMODE_BROWSE;
this.setState(this.state, callback);
}
updateCardStatus = ({areaInfo, editmode, callback = EMPTY_FN} = {}) => {
// 设置卡片主表单为编辑态
this.props.form.setFormStatus(areaInfo.formId, editmode);
// 设置卡片子表表格为编辑态
areaInfo.tableId.forEach(id => {
this.props.cardTable.setStatus(id, editmode == EDITMODE_BROWSE ? EDITMODE_BROWSE : EDITMODE_EDIT);
});
setTimeout(callback, 0);
}
// 查询卡片数据
// data 查询参数
// callback 回调
queryCard = ({data, callback = EMPTY_FN} = {}) => {
// pk pageCode formId 不能为空
if (!(data && data.pk && data.pageCode && data.formId)) {
return;
}
// 查询请求
ajax({
url: URLS.loadUrl,
data: data,
success: (res) => {
let {data: {data} = {}} = res;
callback(data);
},
});
}
/**
*根据参数id查询数据填充数据
*减少重复代码
*/
queryCardById = ({id,callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 调用卡片查询方法,通过回调处理查询结果
this.queryCard({
data: { // 查询参数
pageCode: this.config.pagecode, // pagecode
pk: id, // 主键
...area // 卡片区域编码
},
callback: (data) => { // data为查询结果
// 填充卡片数据或清空卡片数据
data ? this.fillCardData({data}) : this.clearCardData();
// 更新按钮状态
this.updateBtnStatus();
callback();
}
});
}
// 填充卡片数据
// data 卡片数据格式参考后端ExtBillCard类
// callback 回调,无参数
fillCardData = ({data, callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 设置主表单数据
this.props.form.setFormItemsValue(area.formId, data && data.head && data.head[area.formId] && data.head[area.formId].rows[0].values || {});
// 设置子表表格数据
area.tableId.forEach(id => {
if (data && data.bodys && data.bodys[id]) {
this.props.cardTable.setTableData(id, data.bodys[id], () => {
});
} else { // 子表没值则清空
this.props.cardTable.setTableData(id, {rows: []});
}
});
setTimeout(callback);
}
// 清空卡片数据
// callback 回调,无参数
clearCardData = ({callback = EMPTY_FN} = {}) => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 清空主表单数据
this.props.form.EmptyAllFormValue(area.formId);
// 清空子表表格数据
area.tableId.forEach(id => {
this.props.cardTable.setTableData(id, {rows: []});
});
setTimeout(callback);
}
// 初始化卡片翻页器
initCardPaginationWithAllpks = () => {
let {allpks} = this.state.allpks;
// 设置卡片翻页器的allpks当调用cardPagination组件的API新增、删除pk时allpks会同步更新
this.props.cardPagination.setCardPaginationAllpks(allpks);
}
// 获取卡片数据
getCardData = () => {
// 获取卡片区域编码
let area = this.getCardAreaCode();
// 获取卡片界面数据(主表单、子表表格)
let cardData = this.props.createExtCardData(this.config.pagecode, area.formId, area.tableId);
return cardData;
}
// 获取卡片区域编码包括主表单formId子表格tableId单表时没有tableId
// 返回格式:{formId: '', tableId: ['']}
getCardAreaCode = () => {
return {
tableId: Object.keys(this.state.card.formlist),
formId: this.state.card.form.area
}
}
/**
* 按钮点击事件
* @param props
* @param btnCode 按钮id
* @param param 列表操作列参数适配操作列按钮
*/
onBtnClickHead = (props, btnCode, param = {}) => {
switch (btnCode) {
case ACTIONS.REFRESH: // 点击刷新
this.onRefresh();
break;
default:
break;
}
}
/**
* 点击刷新按钮
*/
onRefresh = () => {
// 获取主键
let billId = this.state.currentId;
this.queryCardById({id:billId,callback:()=>{
// 提示
toast({color: 'success', content: '刷新成功'});
}});
}
/**
* 卡片翻页
* @param props
* @param nextId 下一个单据id
*/
onBtnClickCardPagniation = (props, nextId) => {
this.setState({currentId:nextId},this.queryCardById({id:nextId}));
}
/**
* 方法功能
* 卡片子表表肩按钮事件
* @param props
* @param btnCode 按钮id
* @param tableId 表格id
*/
onBtnClickFormlist = (props, btnCode, tableId, row) => {
// 卡片子表表肩符合以_AddLine结尾的规范根据后缀判断时什么按钮
let code = btnCode.split('_');
switch (code[code.length - 1]) {
case 'ExpandLine':
case 'RetractLine':
this.onCardTableExpandLine(tableId, row);
break;
default:
break;
}
}
/**
* 方法功能
* 卡片孙表选择框发生改变事件
*/
onSelectedChangeGrandson = () => {
// 更新按钮状态
this.updateBtnStatus();
}
/**
*子表展开
*/
onCardTableExpandLine = (tableId, row) => {
let {editmode} = this.state;
let status = editmode == EDITMODE_BROWSE ? EDITMODE_BROWSE : EDITMODE_EDIT;
this.props.cardTable.openModel(tableId, status, row.data, row.index);
}
}
const config = {
title: '每日出库情况录入审批',
pagecode: '400600424P_MrckqklrMasterP',
appcode: '400600424P',
domainName: 'so',
version: 2207
};
ApplicationPage = createPage({
initTemplate:{},
billinfo: {
billtype: 'extcard',
pagecode: '400600424P_MrckqklrMasterP',
headcode: 'MrckqklrMasterForm',
bodycode: ['MrckqklrSlave0Sub']
}
})(ApplicationPage);
ReactDOM.render(<ApplicationPage {...config}/>, document.querySelector("#app"));

View File

@ -0,0 +1,3 @@
{
}

View File

@ -0,0 +1,5 @@
{
"refer-400600422-000001": "销售订单状态",
"refer-400600422-000002": "编码",
"refer-400600422-000003": "名称"
}

View File

@ -0,0 +1,3 @@
{
}

View File

@ -0,0 +1,5 @@
{
"refer-400600424-000001": "每日出库情况录入",
"refer-400600424-000002": "编码",
"refer-400600424-000003": "名称"
}

View File

@ -0,0 +1,5 @@
{
"refer-400600424-000001": "每日出库情况录入",
"refer-400600424-000002": "编码",
"refer-400600424-000003": "名称"
}

View File

@ -0,0 +1,23 @@
{
"4006BUSIPARAM-000000": "逐级汇总",
"4006BUSIPARAM-000001": "拼接后的值",
"4006BUSIPARAM-000002": "待选",
"4006BUSIPARAM-000003": "已选",
"4006BUSIPARAM-000004": "一级汇总",
"4006BUSIPARAM-000005": "二级汇总",
"4006BUSIPARAM-000006": "三级汇总",
"4006BUSIPARAM-000007": "四级汇总",
"4006BUSIPARAM-000008": "五级汇总",
"4006BUSIPARAM-000009": "末级汇总",
"4006BUSIPARAM-000010": "汇总规则",
"4006BUSIPARAM-000011": "求和",
"4006BUSIPARAM-000012": "求平均",
"4006BUSIPARAM-000013": "求加权平均",
"4006BUSIPARAM-000014": "和",
"4006BUSIPARAM-000015": "二者必须选择一个",
"4006BUSIPARAM-000016": "必须选择",
"4006BUSIPARAM-000017": "动态参数设置",
"4006BUSIPARAM-000018": "物料基本分类汇总级次",
"4006BUSIPARAM-000019": "确定",
"4006BUSIPARAM-000020": "取消"
}

View File

@ -0,0 +1,16 @@
{
"4006BUYLARGESS-000000": "是否修改组织,这样会清空您录入的信息!",
"4006BUYLARGESS-000001": "删除成功",
"4006BUYLARGESS-000002": "最后一条数据了",
"4006BUYLARGESS-000003": "表体不能为空。",
"4006BUYLARGESS-000004": "保存成功",
"4006BUYLARGESS-000005": "当前档案未保存,您确认离开此页面?",
"4006BUYLARGESS-000006": "买赠设置",
"4006BUYLARGESS-000007": "物料销售分类",
"4006BUYLARGESS-000008": "客户销售分类",
"4006BUYLARGESS-000009": "操作",
"4006BUYLARGESS-000010": "未查询出符合条件的数据",
"4006BUYLARGESS-000011": "确定要删除吗?",
"4006BUYLARGESS-000012": "确认修改",
"4006BUYLARGESS-000013": "请选择数据"
}

View File

@ -0,0 +1,23 @@
{
"4006CUSTMATERIAL-000000": "请选择销售组织",
"4006CUSTMATERIAL-000001": "允许销售",
"4006CUSTMATERIAL-000002": "确认取消",
"4006CUSTMATERIAL-000003": "是否确认要取消?",
"4006CUSTMATERIAL-000004": "确认删除",
"4006CUSTMATERIAL-000005": "确定要删除所选数据吗?",
"4006CUSTMATERIAL-000006": "删除成功!",
"4006CUSTMATERIAL-000007": "表体不可为空!",
"4006CUSTMATERIAL-000008": "保存成功",
"4006CUSTMATERIAL-000009": "销售组织",
"4006CUSTMATERIAL-000010": "客户与物料关系设置",
"4006CUSTMATERIAL-000011": "物料销售分类",
"4006CUSTMATERIAL-000012": "客户销售分类",
"4006CUSTMATERIAL-000013": "操作",
"4006CUSTMATERIAL-000014": "导入成功,请点击刷新按钮或者重新查询数据!",
"4006CUSTMATERIAL-000015": "刷新成功!",
"4006CUSTMATERIAL-000016": "请选择销售组织",
"4006CUSTMATERIAL-000017": "未查询出符合条件的数据",
"4006CUSTMATERIAL-000018": "查询成功,共",
"4006CUSTMATERIAL-000019": "条",
"4006CUSTMATERIAL-000020": "当前单据未保存,您确认离开此页面?"
}

View File

@ -0,0 +1,50 @@
{
"4006DELIVERY-000000": "整单关闭成功",
"4006DELIVERY-000001": "整单打开成功",
"4006DELIVERY-000002": "报检成功",
"4006DELIVERY-000003": "单据信用查询",
"4006DELIVERY-000004": "请选择数据!",
"4006DELIVERY-000005": "删除成功",
"4006DELIVERY-000006": "出库关闭成功",
"4006DELIVERY-000007": "出库打开成功",
"4006DELIVERY-000008": "最后一条数据了",
"4006DELIVERY-000009": "请选择数据",
"4006DELIVERY-000010": "参照增行",
"4006DELIVERY-000011": "保存成功",
"4006DELIVERY-000012": "提交成功",
"4006DELIVERY-000013": "收回成功",
"4006DELIVERY-000014": "当前单据未保存,您确认离开此页面?",
"4006DELIVERY-000015": "发货单",
"4006DELIVERY-000016": "价格改判",
"4006DELIVERY-000017": "运输状态",
"4006DELIVERY-000018": "指派",
"4006DELIVERY-000019": "操作",
"4006DELIVERY-000020": "提示",
"4006DELIVERY-000021": "请选择要操作的发货单!",
"4006DELIVERY-000022": "删除失败",
"4006DELIVERY-000023": "错误",
"4006DELIVERY-000024": "请选择发货单!",
"4006DELIVERY-000025": "待提交",
"4006DELIVERY-000026": "审批中",
"4006DELIVERY-000027": "执行中",
"4006DELIVERY-000028": "全部",
"4006DELIVERY-000029": "确定要删除吗?",
"4006DELIVERY-000030": "状态:",
"4006DELIVERY-000031": "扩展属性",
"4006DELIVERY-000032": "刷新成功!",
"4006DELIVERY-000033": "删除",
"4006DELIVERY-000034": "提交",
"4006DELIVERY-000035": "收回",
"4006DELIVERY-000036": "选择销售订单",
"4006DELIVERY-000037": "调拨订单",
"4006DELIVERY-000038": "生成发货单",
"4006DELIVERY-000039": "销售订单",
"4006DELIVERY-000040": "确认",
"4006DELIVERY-000041": "当前存在未处理完成的单据,是否放弃转单",
"4006DELIVERY-000042": "增行",
"4006DELIVERY-000043": "待发货数量",
"4006DELIVERY-000044": "科箭TMS",
"4006DELIVERY-000045": "单据号",
"4006DELIVERY-000046": "已经发货关闭。",
"4006DELIVERY-000047": "错误"
}

View File

@ -0,0 +1,3 @@
{
"4006DELIVERYREPORT-000000":"请选择数据"
}

View File

@ -0,0 +1,17 @@
{
"4006DEPMATREL-000000": "请选择销售组织",
"4006DEPMATREL-000001": "允许销售",
"4006DEPMATREL-000002": "确认取消",
"4006DEPMATREL-000003": "是否确认要取消?",
"4006DEPMATREL-000004": "确认删除",
"4006DEPMATREL-000005": "确定要删除所选数据吗?",
"4006DEPMATREL-000006": "删除成功!",
"4006DEPMATREL-000007": "表体不可为空!",
"4006DEPMATREL-000008": "保存成功",
"4006DEPMATREL-000009": "销售组织",
"4006DEPMATREL-000010": "部门与物料关系设置",
"4006DEPMATREL-000011": "物料销售分类",
"4006DEPMATREL-000012": "操作",
"4006DEPMATREL-000013": "刷新成功!",
"4006DEPMATREL-000014": "当前单据未保存,您确认离开此页面?"
}

View File

@ -0,0 +1,14 @@
{
"4006DIRECTARRANGE-000000": "错误",
"4006DIRECTARRANGE-000001": "请选择一行记录",
"4006DIRECTARRANGE-000002": "采购组织",
"4006DIRECTARRANGE-000003": "调出库存组织",
"4006DIRECTARRANGE-000004": "请启用相应模块!",
"4006DIRECTARRANGE-000005": "确定",
"4006DIRECTARRANGE-000006": "取消",
"4006DIRECTARRANGE-000007": "安排的组织或者工厂不能为空。",
"4006DIRECTARRANGE-000008": "选择",
"4006DIRECTARRANGE-000009": "未查询出符合条件的数据",
"4006DIRECTARRANGE-000010": "总数量",
"4006DIRECTARRANGE-000011": "直运安排"
}

View File

@ -0,0 +1,42 @@
{
"4006INITOUTREG-000001": "请先录入订单客户",
"4006INITOUTREG-000008": "关闭/打开原因",
"4006INITOUTREG-000009": "确定",
"4006INITOUTREG-000010": "整单打开成功",
"4006INITOUTREG-000011": "请输入打开/关闭原因!",
"4006INITOUTREG-000012": "整单关闭成功!",
"4006INITOUTREG-000013": "提示",
"4006INITOUTREG-000016": "请选择要删除的行!",
"4006INITOUTREG-000017": "确定要删除吗?",
"4006INITOUTREG-000019": "删除成功!",
"4006INITOUTREG-000025": "请先录入交易类型!",
"4006INITOUTREG-000037": "保存成功!",
"4006INITOUTREG-000050": "请先录入交易类型或者开票客户!",
"4006INITOUTREG-000051": "批次号",
"4006INITOUTREG-000055": "当前单据未保存,您确认离开此页面?",
"4006INITOUTREG-000058": "操作",
"4006INITOUTREG-000060": "请选择要整单关闭的订单!",
"4006INITOUTREG-000061": "请选择要整单打开的订单!",
"4006INITOUTREG-000063": "请选择要删除的订单!",
"4006INITOUTREG-000064": "请选择订单!",
"4006INITOUTREG-000066": "请选择要输出的订单!",
"4006INITOUTREG-000067": "请选择要打印的订单!",
"4006INITOUTREG-000068": "请选择要弃审的订单!",
"4006INITOUTREG-000069": "请选择要审批的订单!",
"4006INITOUTREG-000070": "待提交",
"4006INITOUTREG-000071": "审批中",
"4006INITOUTREG-000072": "执行中",
"4006INITOUTREG-000073": "全部",
"4006INITOUTREG-000074": "没有可处理的单据!",
"4006INITOUTREG-000075": "库存组织为空,仓库不可编辑!",
"4006INITOUTREG-000095": "整单打开",
"4006INITOUTREG-000096": "整单关闭",
"4006INITOUTREG-000097": "删除",
"4006INITOUTREG-000100": "取消审批",
"4006INITOUTREG-000101": "审批",
"4006INITOUTREG-000102": "表体行不能为空!",
"4006INITOUTREG-000109": "单据存在来源,不能支持暂存!",
"4006INITOUTREG-000110": "已保存单据不支持暂存!",
"4006INITOUTREG-000111": "取消审批成功",
"4006INITOUTREG-000112": "审批成功"
}

View File

@ -0,0 +1,5 @@
{
"4006MERGEDAILY-000000":"财务模块未启用,无法执行查询!",
"4006MERGEDAILY-000001":"库存模块未启用,无法执行查询!",
"4006MERGEDAILY-000002":"存货核算模块未启用,无法执行查询!"
}

View File

@ -0,0 +1,5 @@
{
"4006MULTIPLEPROFIT-000000":"财务模块未启用,无法执行查询!",
"4006MULTIPLEPROFIT-000001":"库存模块未启用,无法执行查询!",
"4006MULTIPLEPROFIT-000002":"存货核算模块未启用,无法执行查询!"
}

View File

@ -0,0 +1,3 @@
{
"4006ORDERSUMMARY-000000":"应收模块未启用!"
}

View File

@ -0,0 +1,15 @@
{
"4006PREORDERSHIFT-000000": "迁移成功",
"4006PREORDERSHIFT-000001": "预订单迁移",
"4006PREORDERSHIFT-000002": "迁移",
"4006PREORDERSHIFT-000003": "预订单迁移步骤:",
"4006PREORDERSHIFT-000004": "安装销售管理模块;",
"4006PREORDERSHIFT-000005": "点击”迁移“按钮。",
"4006PREORDERSHIFT-000006": "预订单迁移注意事项:",
"4006PREORDERSHIFT-000007": "订单中心预订单迁移后,生成销售管理的预订单,过程不可逆;",
"4006PREORDERSHIFT-000008": "迁移后,销售管理可通过预订单生成销售订单,且支持生产制造将预订单作为需求单据做生产计划;",
"4006PREORDERSHIFT-000009": "迁移前,请将预订单的自定义项设置与订单中心预订单自定义项保持一致。",
"4006PREORDERSHIFT-000010": "请确认是否进行电子销售预订单到销售预订单的迁移?迁移过程中可能耗时比较长。",
"4006PREORDERSHIFT-000011": "提示",
"4006PREORDERSHIFT-000012": "如没有电子销售预订单则迁移不可用,有电子销售预订单支持预订单迁移一次"
}

View File

@ -0,0 +1,13 @@
{
"4006PUBMASSAGE-000000": "组织节点只能维护当前节点有权限组织的数据!",
"4006PUBMASSAGE-000001": "本次冲抵金额不能改大!",
"4006PUBMASSAGE-000002": "本次冲抵金额不能与冲抵金额符号相反!",
"4006PUBMASSAGE-000003": "本次核销金额不能大于可收款单核销金额!",
"4006PUBMASSAGE-000004": "本次核销金额不能与收款单金额符号相反!",
"4006PUBMASSAGE-000005": "订单客户",
"4006PUBMASSAGE-000006": "开票客户",
"4006PUBMASSAGE-000007": "单据号",
"4006PUBMASSAGE-000008": "币种",
"4006PUBMASSAGE-000009": "价税合计",
"4006PUBMASSAGE-000010": "发票信息"
}

View File

@ -0,0 +1,17 @@
{
"4006REPLENISHMENTARRANGE-000000": "请选择一行记录",
"4006REPLENISHMENTARRANGE-000001": "未查询出符合条件的数据",
"4006REPLENISHMENTARRANGE-000002": "采购组织",
"4006REPLENISHMENTARRANGE-000003": "调出库存组织",
"4006REPLENISHMENTARRANGE-000004": "请启用相应模块!",
"4006REPLENISHMENTARRANGE-000005": "确定",
"4006REPLENISHMENTARRANGE-000006": "取消",
"4006REPLENISHMENTARRANGE-000007": "安排的组织或者工厂不能为空。",
"4006REPLENISHMENTARRANGE-000008": "选择",
"4006REPLENISHMENTARRANGE-000009": "销售订单",
"4006REPLENISHMENTARRANGE-000010": "调拨订单",
"4006REPLENISHMENTARRANGE-000011": "总数量",
"4006REPLENISHMENTARRANGE-000012": "补货安排",
"4006REPLENISHMENTARRANGE-000013": "工厂",
"4006REPLENISHMENTARRANGE-000014": "对应下游单据未轻量化"
}

View File

@ -0,0 +1,18 @@
{
"4006RETURNASSIGN-000000": "刷新成功",
"4006RETURNASSIGN-000001": "未查询出符合条件的数据",
"4006RETURNASSIGN-000002": "请选中需要删除的数据",
"4006RETURNASSIGN-000003": "时间戳",
"4006RETURNASSIGN-000004": "主键",
"4006RETURNASSIGN-000005": "退货政策编码",
"4006RETURNASSIGN-000006": "删除成功!",
"4006RETURNASSIGN-000007": "保存成功",
"4006RETURNASSIGN-000008": "当前单据未保存,您确认离开此页面?",
"4006RETURNASSIGN-000009": "物料销售分类",
"4006RETURNASSIGN-000010": "客户销售分类",
"4006RETURNASSIGN-000011": "操作",
"4006RETURNASSIGN-000012": "确定要删除吗?",
"4006RETURNASSIGN-000013": "退货政策分配-集团",
"4006RETURNASSIGN-000014": "销售组织",
"4006RETURNASSIGN-000015": "退货政策分配-销售组织"
}

View File

@ -0,0 +1,101 @@
{
"4006RETURNCONDITION-000000": "申请退货单据金额",
"4006RETURNCONDITION-000001": "申请退货单据金额()",
"4006RETURNCONDITION-000002": "按退货订单金额设置退货条件",
"4006RETURNCONDITION-000003": "申请退货数量",
"4006RETURNCONDITION-000004": "申请退货数量()",
"4006RETURNCONDITION-000005": "按退货数量设置退货条件",
"4006RETURNCONDITION-000006": "条件函数需要指定函数编码",
"4006RETURNCONDITION-000007": "条件函数需要指定操作符",
"4006RETURNCONDITION-000008": "条件函数需要指定函数名称",
"4006RETURNCONDITION-000009": "条件函数需要指定函数表达式",
"4006RETURNCONDITION-000010": "条件函数需要指定函数表达式描述",
"4006RETURNCONDITION-000011": "本函数不需要参数",
"4006RETURNCONDITION-000012": "请输入函数值!",
"4006RETURNCONDITION-000013": "时间区间",
"4006RETURNCONDITION-000014": "请输入函数值和参数值!",
"4006RETURNCONDITION-000015": "请输入值!",
"4006RETURNCONDITION-000016": "赠品",
"4006RETURNCONDITION-000017": "赠品()",
"4006RETURNCONDITION-000018": "(not 赠品())",
"4006RETURNCONDITION-000019": "设置赠品是否可退货",
"4006RETURNCONDITION-000020": "物料编码",
"4006RETURNCONDITION-000021": "物料编码()",
"4006RETURNCONDITION-000022": "按物料编码设置退货条件。",
"4006RETURNCONDITION-000023": "试销期",
"4006RETURNCONDITION-000024": "成长期",
"4006RETURNCONDITION-000025": "成熟期",
"4006RETURNCONDITION-000026": "衰退期",
"4006RETURNCONDITION-000027": "物料的生命周期",
"4006RETURNCONDITION-000028": "物料的生命周期()",
"4006RETURNCONDITION-000029": "按物料的生命周期设置退货条件。",
"4006RETURNCONDITION-000030": "销售订单金额",
"4006RETURNCONDITION-000031": "销售订单金额({0})",
"4006RETURNCONDITION-000032": "单据日期",
"4006RETURNCONDITION-000033": "单据日期-时间区间",
"4006RETURNCONDITION-000034": "单据日期往前推10日",
"4006RETURNCONDITION-000035": "本函数需要输入时间区间",
"4006RETURNCONDITION-000036": "参数输入时为整数",
"4006RETURNCONDITION-000037": "含义为日期区间在与的所有销售订单的价税合计金额之和是否满足表达式",
"4006RETURNCONDITION-000038": "如果参数输入",
"4006RETURNCONDITION-000039": "则表示当前行在和这个日期范围内的销售订单金额之和",
"4006RETURNCONDITION-000040": "实际出库数量",
"4006RETURNCONDITION-000041": "实际出库数量({0})",
"4006RETURNCONDITION-000042": "含义为日期区间在与的所有销售出库单的实际出库的数量之和是否满足表达式",
"4006RETURNCONDITION-000043": "则表示当前行在和这个日期范围内的实际出库数量之和",
"4006RETURNCONDITION-000044": "单据日期()",
"4006RETURNCONDITION-000045": "按单据日期设置退货条件。",
"4006RETURNCONDITION-000046": "质量退货",
"4006RETURNCONDITION-000047": "新产品退货",
"4006RETURNCONDITION-000048": "配额内正常退货",
"4006RETURNCONDITION-000049": "其它",
"4006RETURNCONDITION-000050": "退货原因类型",
"4006RETURNCONDITION-000051": "退货原因类型()",
"4006RETURNCONDITION-000052": "支持按照退货原因设置退货条件,如质量退货、新产品退货、配额内正常退货、其它。",
"4006RETURNCONDITION-000053": "源销售发票日期",
"4006RETURNCONDITION-000054": "源销售发票日期()",
"4006RETURNCONDITION-000055": "按退货订单的来源蓝字销售发票日期设置退货条件",
"4006RETURNCONDITION-000056": "源销售订单日期",
"4006RETURNCONDITION-000057": "源销售订单日期()",
"4006RETURNCONDITION-000058": "按退货订单的来源蓝字销售订单日期设置退货条件",
"4006RETURNCONDITION-000059": "源出库单日期",
"4006RETURNCONDITION-000060": "源出库单日期()",
"4006RETURNCONDITION-000061": "按退货订单的来源蓝字销售出库单日期设置退货条件",
"4006RETURNCONDITION-000062": "源销售发票天数",
"4006RETURNCONDITION-000063": "源销售发票天数()",
"4006RETURNCONDITION-000064": "可以按照源销售发票天数设置退货条件。",
"4006RETURNCONDITION-000065": "源销售订单天数",
"4006RETURNCONDITION-000066": "源销售订单天数()",
"4006RETURNCONDITION-000067": "可以按照源销售订单天数设置退货条件。",
"4006RETURNCONDITION-000068": "源出库单天数",
"4006RETURNCONDITION-000069": "源出库单天数()",
"4006RETURNCONDITION-000070": "可以按照源出库单天数设置退货条件。",
"4006RETURNCONDITION-000071": "公式检查成功",
"4006RETURNCONDITION-000072": "请指定要进行处理的公式",
"4006RETURNCONDITION-000073": "公式编辑",
"4006RETURNCONDITION-000074": "删除",
"4006RETURNCONDITION-000075": "清空",
"4006RETURNCONDITION-000076": "业务函数",
"4006RETURNCONDITION-000077": "添加",
"4006RETURNCONDITION-000078": "业务说明",
"4006RETURNCONDITION-000079": "公式检查",
"4006RETURNCONDITION-000080": "确定",
"4006RETURNCONDITION-000081": "取消",
"4006RETURNCONDITION-000082": "刷新成功",
"4006RETURNCONDITION-000083": "未查询出符合条件的数据",
"4006RETURNCONDITION-000084": "请选中需要删除的数据",
"4006RETURNCONDITION-000085": "时间戳",
"4006RETURNCONDITION-000086": "主键",
"4006RETURNCONDITION-000087": "退货条件编码",
"4006RETURNCONDITION-000088": "退货条件名称",
"4006RETURNCONDITION-000089": "删除成功!",
"4006RETURNCONDITION-000090": "保存成功",
"4006RETURNCONDITION-000091": "当前单据未保存,您确认离开此页面?",
"4006RETURNCONDITION-000092": "操作",
"4006RETURNCONDITION-000093": "确定要删除吗?",
"4006RETURNCONDITION-000094": "退货条件设置-集团",
"4006RETURNCONDITION-000095": "销售组织",
"4006RETURNCONDITION-000096": "退货条件设置-销售组织",
"4006RETURNCONDITION-000097": "本函数需要输入时间区间,参数输入时为整数,含义为日期区间在“单据日期“与“单据日期时间区间“的所有销售订单的价税合计金额之和是否满足表达式。如果参数输入10,则表示当前行在“单据日期“和“单据日期往前推10日“这个日期范围内的销售订单金额之和。",
"4006RETURNCONDITION-000098": "本函数需要输入时间区间,参数输入时为整数,含义为日期区间在“单据日期“与“单据日期时间区间“的所有销售出库单的实际出库的数量之和是否满足表达式。如果参数输入10,则表示当前行在“单据日期“和“单据日期往前推10日“这个日期范围内的实际出库数量之和。"
}

View File

@ -0,0 +1,3 @@
{
"4006RETURNORDEREXEQUERY-000001": "请选择数据!"
}

View File

@ -0,0 +1,34 @@
{
"4006RETURNPOLICY-000000": "条件函数需要指定函数编码",
"4006RETURNPOLICY-000001": "条件函数需要指定函数名称",
"4006RETURNPOLICY-000002": "条件函数需要指定函数表达式",
"4006RETURNPOLICY-000003": "条件函数需要指定函数表达式描述",
"4006RETURNPOLICY-000004": "本函数不需要参数",
"4006RETURNPOLICY-000005": "判断退货条件",
"4006RETURNPOLICY-000006": "公式检查成功",
"4006RETURNPOLICY-000007": "请指定要进行处理的公式",
"4006RETURNPOLICY-000008": "公式编辑",
"4006RETURNPOLICY-000009": "删除",
"4006RETURNPOLICY-000010": "清空",
"4006RETURNPOLICY-000011": "业务函数",
"4006RETURNPOLICY-000012": "添加",
"4006RETURNPOLICY-000013": "业务说明",
"4006RETURNPOLICY-000014": "公式检查",
"4006RETURNPOLICY-000015": "确定",
"4006RETURNPOLICY-000016": "取消",
"4006RETURNPOLICY-000017": "刷新成功",
"4006RETURNPOLICY-000018": "未查询出符合条件的数据",
"4006RETURNPOLICY-000019": "时间戳",
"4006RETURNPOLICY-000020": "主键",
"4006RETURNPOLICY-000021": "退货政策编码",
"4006RETURNPOLICY-000022": "退货政策名称",
"4006RETURNPOLICY-000023": "删除成功!",
"4006RETURNPOLICY-000024": "保存成功",
"4006RETURNPOLICY-000025": "当前单据未保存,您确认离开此页面?",
"4006RETURNPOLICY-000026": "操作",
"4006RETURNPOLICY-000027": "确定要删除吗?",
"4006RETURNPOLICY-000028": "退货政策设置-集团",
"4006RETURNPOLICY-000029": "销售组织",
"4006RETURNPOLICY-000030": "退货政策设置-销售组织",
"4006RETURNPOLICY-000031": "判断退货条件(\"{0}\")"
}

View File

@ -0,0 +1,17 @@
{
"4006RETURNREASON-000000": "刷新成功",
"4006RETURNREASON-000001": "未查询出符合条件的数据",
"4006RETURNREASON-000002": "请选中需要删除的数据",
"4006RETURNREASON-000003": "时间戳",
"4006RETURNREASON-000004": "主键",
"4006RETURNREASON-000005": "退货原因编码",
"4006RETURNREASON-000006": "退货原因名称",
"4006RETURNREASON-000007": "删除成功!",
"4006RETURNREASON-000008": "保存成功",
"4006RETURNREASON-000009": "当前单据未保存,您确认离开此页面?",
"4006RETURNREASON-000010": "操作",
"4006RETURNREASON-000011": "确定要删除吗?",
"4006RETURNREASON-000012": "退货原因设置-集团",
"4006RETURNREASON-000013": "销售组织",
"4006RETURNREASON-000014": "退货原因设置-销售组织"
}

View File

@ -0,0 +1,105 @@
{
"4006SALEINVOICE-000000": "错误",
"4006SALEINVOICE-000001": "该发票没有保存,不能查看兑付记录!",
"4006SALEINVOICE-000002": "费用冲抵情况",
"4006SALEINVOICE-000003": "确认",
"4006SALEINVOICE-000004": "有未保存的单据,确定要退出转单吗?",
"4006SALEINVOICE-000005": "确认取消",
"4006SALEINVOICE-000006": "确定要取消吗?",
"4006SALEINVOICE-000007": "取消成功!",
"4006SALEINVOICE-000008": "提交成功!",
"4006SALEINVOICE-000009": "单据信用查询",
"4006SALEINVOICE-000010": "非末级物料行,不允许删除",
"4006SALEINVOICE-000011": "销售发票下列行:",
"4006SALEINVOICE-000012": "已做过费用冲抵,不可删除",
"4006SALEINVOICE-000013": "删除",
"4006SALEINVOICE-000014": "确定要删除吗?",
"4006SALEINVOICE-000015": "删除成功!",
"4006SALEINVOICE-000016": "传金税",
"4006SALEINVOICE-000017": "关闭",
"4006SALEINVOICE-000018": "导出",
"4006SALEINVOICE-000019": "金税导出成功!",
"4006SALEINVOICE-000020": "汇总状态下,不可做费用冲抵",
"4006SALEINVOICE-000021": "对冲生成的发票不能做费用冲抵",
"4006SALEINVOICE-000022": "费用冲抵",
"4006SALEINVOICE-000023": "取消",
"4006SALEINVOICE-000024": "赠品、折扣和劳务行不做冲抵,过滤后没有可冲抵的行",
"4006SALEINVOICE-000025": "发票冲抵比例为0",
"4006SALEINVOICE-000026": "请确保您选定的行输入冲抵金额不为0",
"4006SALEINVOICE-000027": "审批通过的单据才能做对冲",
"4006SALEINVOICE-000028": "对冲标记为正常或已被部分对冲的发票才允许对冲",
"4006SALEINVOICE-000029": "最后一条数据了",
"4006SALEINVOICE-000030": "参照增行",
"4006SALEINVOICE-000031": "保存成功!",
"4006SALEINVOICE-000032": "汇总状态下,不可取消冲抵",
"4006SALEINVOICE-000033": "单据未做过费用冲抵,不能取消冲抵",
"4006SALEINVOICE-000034": "对冲生成的发票不能做取消费用冲抵",
"4006SALEINVOICE-000035": "取消费用冲抵",
"4006SALEINVOICE-000036": "取消费用冲抵将把以前所有的冲抵关系解除,您确定要取消冲抵吗?",
"4006SALEINVOICE-000037": "当前单据未保存,您确认离开此页面?",
"4006SALEINVOICE-000038": "数据已经被删除,请返回列表界面!",
"4006SALEINVOICE-000039": "销售发票",
"4006SALEINVOICE-000040": "指派",
"4006SALEINVOICE-000041": "导入成功!",
"4006SALEINVOICE-000042": "操作",
"4006SALEINVOICE-000043": "提示",
"4006SALEINVOICE-000044": "请选择要操作的发票!",
"4006SALEINVOICE-000045": "删除完成",
"4006SALEINVOICE-000046": "成功",
"4006SALEINVOICE-000047": "条, 失败信息:",
"4006SALEINVOICE-000048": "请选中数据",
"4006SALEINVOICE-000049": "请注意",
"4006SALEINVOICE-000050": "未查出符合条件的数据",
"4006SALEINVOICE-000051": "确定要删除所选数据吗?",
"4006SALEINVOICE-000052": "待提交",
"4006SALEINVOICE-000053": "审批中",
"4006SALEINVOICE-000054": "全部",
"4006SALEINVOICE-000055": "汇总",
"4006SALEINVOICE-000056": "确定要删除吗?",
"4006SALEINVOICE-000057": "生成销售发票",
"4006SALEINVOICE-000058": "本次开票总数量",
"4006SALEINVOICE-000059": "本次开票总金额",
"4006SALEINVOICE-000060": "选择订单",
"4006SALEINVOICE-000061": "销售订单",
"4006SALEINVOICE-000062": "销售出库",
"4006SALEINVOICE-000063": "刷新成功",
"4006SALEINVOICE-000064": "查询成功,共",
"4006SALEINVOICE-000065": "条",
"4006SALEINVOICE-000066": "出库单",
"4006SALEINVOICE-000067": "出库对冲",
"4006SALEINVOICE-000068": "状态:",
"4006SALEINVOICE-000069": "调整折扣",
"4006SALEINVOICE-000070": "扩展属性",
"4006SALEINVOICE-000071": "收回成功!",
"4006SALEINVOICE-000072": "查询成功!",
"4006SALEINVOICE-000073": "请选择收款人!",
"4006SALEINVOICE-000074": "请选择审核人!",
"4006SALEINVOICE-000075": "出库对冲成功!",
"4006SALEINVOICE-000076": "税额小计",
"4006SALEINVOICE-000077": "毛利预估",
"4006SALEINVOICE-000078": "发票执行情况",
"4006SALEINVOICE-000079": "必须存在物料、库存组织都不为空行!",
"4006SALEINVOICE-000080": "表体行数据不能为空!",
"4006SALEINVOICE-000081": "提交开票申请成功",
"4006SALEINVOICE-000082": "提交",
"4006SALEINVOICE-000083": "提交开票申请",
"4006SALEINVOICE-000085": "选中的第一张发票金额大于0不能进行红字发票处理",
"4006SALEINVOICE-000086": "收回",
"4006SALEINVOICE-000087": "退出转单",
"4006SALEINVOICE-000088": "返回",
"4006SALEINVOICE-000089": "有未保存的单据,确定要返回吗?",
"4006SALEINVOICE-000090": "联查凭证",
"4006SALEINVOICE-000091": "没有关联的单据!",
"4006SALEINVOICE-000092": "协同生成采购发票成功",
"4006SALEINVOICE-000093": "对冲生成的发票不能取成本价",
"4006SALEINVOICE-000094": "汇总状态下不允许进行修改!",
"4006SALEINVOICE-000095": "期初发出商品",
"4006SALEINVOICE-000096": "已冲抵的对冲发票不可以修改数量和价税合计",
"4006SALEINVOICE-000097": "汇总显示的对冲发票不可以修改数量和价税合计",
"4006SALEINVOICE-000098": "先审批通过后开票",
"4006SALEINVOICE-000099": "发票已经开票,不允许增行!",
"4006SALEINVOICE-000100": "发票已经开票,不允许删行!",
"4006SALEINVOICE-000101": "选择期初发出商品",
"4006SALEINVOICE-000102": "对冲生成的发票不允许增行!",
"4006SALEINVOICE-000103": "生成开票申请的发票不允许增行或删行!"
}

View File

@ -0,0 +1,4 @@
{
"4006SALEINVOICEEXEQUERY-000000": "库存模块未启用,出库日期字段无法查询!",
"4006SALEINVOICEEXEQUERY-000001": "请选择数据!"
}

View File

@ -0,0 +1,128 @@
{
"4006SALEORDER-000000": "请选择要询价的行!",
"4006SALEORDER-000001": "费用冲抵或赠品价格分摊后不允许询价!",
"4006SALEORDER-000002": "确认取消",
"4006SALEORDER-000003": "是否确认要取消?",
"4006SALEORDER-000004": "取消成功",
"4006SALEORDER-000005": "该订单没有保存,不能查看兑付记录!",
"4006SALEORDER-000006": "费用兑付明细",
"4006SALEORDER-000007": "关闭",
"4006SALEORDER-000008": "关闭/打开原因",
"4006SALEORDER-000009": "确定",
"4006SALEORDER-000010": "取消",
"4006SALEORDER-000011": "请输入打开/关闭原因!",
"4006SALEORDER-000012": "整单关闭成功!",
"4006SALEORDER-000013": "提示",
"4006SALEORDER-000014": "提交成功!",
"4006SALEORDER-000015": "单据信用查询",
"4006SALEORDER-000016": "请选择要删除的行!",
"4006SALEORDER-000017": "确定要删除吗?",
"4006SALEORDER-000018": "确定要删除所选数据吗?",
"4006SALEORDER-000019": "删除成功!",
"4006SALEORDER-000020": "请选择要换货的行!",
"4006SALEORDER-000021": "换货成功!",
"4006SALEORDER-000022": "只有审批通过的订单才能冻结!",
"4006SALEORDER-000023": "冻结成功!",
"4006SALEORDER-000024": "费用冲抵后不允许赠品价格分摊!",
"4006SALEORDER-000025": "请先录入交易类型!",
"4006SALEORDER-000026": "交易类型为赠品兑付,不允许赠品价格分摊!",
"4006SALEORDER-000027": "赠品、折扣和劳务行不做冲抵过滤掉价税合计为空和0的行后没有可冲抵的行请检查冲抵比例是否为0!",
"4006SALEORDER-000028": "交易类型为赠品兑付,不允许费用冲抵!",
"4006SALEORDER-000029": "费用冲抵",
"4006SALEORDER-000030": "错误",
"4006SALEORDER-000031": "请确保您选定的行输入冲抵金额不为0",
"4006SALEORDER-000032": "有未保存的单据,确定要返回吗?",
"4006SALEORDER-000033": "收款计划",
"4006SALEORDER-000034": "请启用采购模块!",
"4006SALEORDER-000035": "请启用库存模块!",
"4006SALEORDER-000036": "请启用合同模块!",
"4006SALEORDER-000037": "保存成功!",
"4006SALEORDER-000038": "是否关联合同",
"4006SALEORDER-000039": "是",
"4006SALEORDER-000040": "否",
"4006SALEORDER-000041": "销售订单关联合同",
"4006SALEORDER-000042": "协同生成采购订单成功!",
"4006SALEORDER-000043": "收回成功!",
"4006SALEORDER-000044": "费用冲抵后不允许取消赠品价格分摊!",
"4006SALEORDER-000045": "只有冻结的订单才能解冻!",
"4006SALEORDER-000046": "解冻成功!",
"4006SALEORDER-000047": "单据未做过费用冲抵,不能取消冲抵",
"4006SALEORDER-000048": "确认取消冲抵",
"4006SALEORDER-000049": "请确认是否要取消当前数据冲抵情况?",
"4006SALEORDER-000050": "请先录入交易类型或者客户!",
"4006SALEORDER-000051": "批次号",
"4006SALEORDER-000052": "确认修改",
"4006SALEORDER-000053": "是否修改组织,这样会清空您录入的信息?",
"4006SALEORDER-000054": "销售订单价税合计与收款单金额算术符号不一致!",
"4006SALEORDER-000055": "当前单据未保存,您确认离开此页面?",
"4006SALEORDER-000056": "销售订单",
"4006SALEORDER-000057": "指派",
"4006SALEORDER-000058": "操作",
"4006SALEORDER-000059": "请选择要操作的订单!",
"4006SALEORDER-000060": "请选择要整单关闭的订单!",
"4006SALEORDER-000061": "请选择要提交的订单!",
"4006SALEORDER-000062": "未查到数据",
"4006SALEORDER-000063": "请选择要删除的订单!",
"4006SALEORDER-000064": "请选择订单!",
"4006SALEORDER-000065": "请选择要冻结的订单!",
"4006SALEORDER-000066": "请选择要输出的订单!",
"4006SALEORDER-000067": "请选择要打印的订单!",
"4006SALEORDER-000068": "请选择要收回的订单!",
"4006SALEORDER-000069": "请选择要解冻的订单!",
"4006SALEORDER-000070": "待提交",
"4006SALEORDER-000071": "审批中",
"4006SALEORDER-000072": "执行中",
"4006SALEORDER-000073": "全部",
"4006SALEORDER-000074": "确认删除?",
"4006SALEORDER-000075": "生成销售订单",
"4006SALEORDER-000076": "总数量",
"4006SALEORDER-000077": "总金额",
"4006SALEORDER-000078": "选择采购订单",
"4006SALEORDER-000079": "选择销售订单",
"4006SALEORDER-000080": "选择销售报价单",
"4006SALEORDER-000081": "选择销售出库单",
"4006SALEORDER-000082": "选择销售合同",
"4006SALEORDER-000083": "不能选中",
"4006SALEORDER-000084": "正常询价",
"4006SALEORDER-000085": "非直运",
"4006SALEORDER-000086": "不分摊",
"4006SALEORDER-000087": "价格0",
"4006SALEORDER-000088": "调整折扣",
"4006SALEORDER-000089": "普通",
"4006SALEORDER-000090": "最低售价",
"4006SALEORDER-000091": "扩展属性",
"4006SALEORDER-000092": "询销售价",
"4006SALEORDER-000093": "参考售价",
"4006SALEORDER-000094": "参考成本",
"4006SALEORDER-000095": "提交",
"4006SALEORDER-000096": "整单关闭",
"4006SALEORDER-000097": "删除",
"4006SALEORDER-000098": "冻结",
"4006SALEORDER-000099": "解冻",
"4006SALEORDER-000100": "收回",
"4006SALEORDER-000101": "生成协同采购订单",
"4006SALEORDER-000102": "表体行不能为空!",
"4006SALEORDER-000103": "当前行没有价格组成信息",
"4006SALEORDER-000104": "您已经做了现销处理不允许做费用冲抵!",
"4006SALEORDER-000105": "单据已现销处理,不能取消冲抵",
"4006SALEORDER-000106": "返回",
"4006SALEORDER-000107": "退出转单",
"4006SALEORDER-000108": "有未保存的单据,确定要退出转单吗?",
"4006SALEORDER-000109": "单据存在来源,不能支持暂存!",
"4006SALEORDER-000110": "已保存单据不支持暂存!",
"4006SALEORDER-000111": "销售订单已经做过费用冲抵或者收款核销,不能支持暂存!",
"4006SALEORDER-000112": "销售订单存在收款金额,不能支持暂存!",
"4006SALEORDER-000113": "毛利预估",
"4006SALEORDER-000114": "销售现销",
"4006SALEORDER-000115": "执行情况",
"4006SALEORDER-000116": "存量查询",
"4006SALEORDER-000117": "现存量",
"4006SALEORDER-000118": "可用量",
"4006SALEORDER-000119": "价格组成",
"4006SALEORDER-000120": "选择借出单",
"4006SALEORDER-000121": "保存提交成功",
"4006SALEORDER-000122": "选择预订单",
"4006SALEORDER-000123": "销售订单已做过收款,该字段不可编辑!",
"4006SALEORDER-000124": "销售订单已做过费用冲抵,该字段不可编辑!",
"4006SALEORDER-000125": "销售订单已做过赠品分摊,该字段不可编辑!"
}

View File

@ -0,0 +1,29 @@
{
"4006SALEORDERCLOSE-000000": "关闭/打开原因",
"4006SALEORDERCLOSE-000001": "确定",
"4006SALEORDERCLOSE-000002": "取消",
"4006SALEORDERCLOSE-000003": "错误",
"4006SALEORDERCLOSE-000004": "关闭或打开的原因不能为空。",
"4006SALEORDERCLOSE-000005": "请选择要打印的订单!",
"4006SALEORDERCLOSE-000006": "请选择一行记录",
"4006SALEORDERCLOSE-000007": "未查询出符合条件的数据",
"4006SALEORDERCLOSE-000008": "请输入关闭",
"4006SALEORDERCLOSE-000009": "打开原因",
"4006SALEORDERCLOSE-000010": "销售订单关闭管理",
"4006SALEORDERCLOSE-000011": "发货",
"4006SALEORDERCLOSE-000012": "出库",
"4006SALEORDERCLOSE-000013": "开票",
"4006SALEORDERCLOSE-000014": "结算",
"4006SALEORDERCLOSE-000015": "整单关闭",
"4006SALEORDERCLOSE-000016": "整单打开",
"4006SALEORDERCLOSE-000017": "行关闭",
"4006SALEORDERCLOSE-000018": "行打开",
"4006SALEORDERCLOSE-000019": "发货关闭",
"4006SALEORDERCLOSE-000020": "发货打开",
"4006SALEORDERCLOSE-000021": "出库关闭",
"4006SALEORDERCLOSE-000022": "出库打开",
"4006SALEORDERCLOSE-000023": "开票关闭",
"4006SALEORDERCLOSE-000024": "开票打开",
"4006SALEORDERCLOSE-000025": "结算关闭",
"4006SALEORDERCLOSE-000026": "结算打开"
}

View File

@ -0,0 +1,5 @@
{
"4006SALEORDERPROFIT-000000":"财务模块未启用,无法执行查询!",
"4006SALEORDERPROFIT-000001":"库存模块未启用,无法执行查询!",
"4006SALEORDERPROFIT-000002":"存货核算模块未启用,无法执行查询!"
}

View File

@ -0,0 +1,4 @@
{
"4006SALEORDERREPORT-000000": "请选择数据",
"4006SALEORDERREPORT-000001": "财务模块未启用,暂估应收金额等字段无法查询!"
}

View File

@ -0,0 +1,37 @@
{
"4006SALEORDERREVISE-000000": "请选择要询价的行!",
"4006SALEORDERREVISE-000001": "费用冲抵或赠品价格分摊后不允许询价!",
"4006SALEORDERREVISE-000002": "确认取消",
"4006SALEORDERREVISE-000003": "是否确认要取消?",
"4006SALEORDERREVISE-000004": "该订单没有保存,不能查看兑付记录!",
"4006SALEORDERREVISE-000005": "费用兑付明细",
"4006SALEORDERREVISE-000006": "关闭",
"4006SALEORDERREVISE-000007": "提示",
"4006SALEORDERREVISE-000008": "提交成功!",
"4006SALEORDERREVISE-000009": "单据信用查询",
"4006SALEORDERREVISE-000010": "确定",
"4006SALEORDERREVISE-000011": "请选择要删除的行!",
"4006SALEORDERREVISE-000012": "销售订单修订历史",
"4006SALEORDERREVISE-000013": "费用冲抵或者赠品兑付的订单不能修订!",
"4006SALEORDERREVISE-000014": "表体数据为空,不允许保存。",
"4006SALEORDERREVISE-000015": "保存成功!",
"4006SALEORDERREVISE-000016": "收回成功!",
"4006SALEORDERREVISE-000017": "当前单据未保存,您确认离开此页面?",
"4006SALEORDERREVISE-000018": "销售订单修订",
"4006SALEORDERREVISE-000019": "指派",
"4006SALEORDERREVISE-000020": "操作",
"4006SALEORDERREVISE-000021": "请选择要提交的订单!",
"4006SALEORDERREVISE-000022": "未查询出符合条件的数据",
"4006SALEORDERREVISE-000023": "请选择要操作的订单!",
"4006SALEORDERREVISE-000024": "请选择订单!",
"4006SALEORDERREVISE-000025": "请选择要输出的订单!",
"4006SALEORDERREVISE-000026": "请选择要打印的订单!",
"4006SALEORDERREVISE-000027": "请选择要收回的订单!",
"4006SALEORDERREVISE-000028": "刷新成功!",
"4006SALEORDERREVISE-000029": "查询成功,共{0}条",
"4006SALEORDERREVISE-000030": "提交",
"4006SALEORDERREVISE-000031": "当前行没有价格组成信息",
"4006SALEORDERREVISE-000032": "毛利预估",
"4006SALEORDERREVISE-000033": "执行情况",
"4006SALEORDERREVISE-000034": "价格组成"
}

View File

@ -0,0 +1,13 @@
{
"4006SALEOUTET-000000": "请选择要输出的单据!",
"4006SALEOUTET-000001": "错误",
"4006SALEOUTET-000002": "请选择要打印的订单!",
"4006SALEOUTET-000003": "未查询出符合条件的数据",
"4006SALEOUTET-000004": "暂估应收处理成功:处理成功",
"4006SALEOUTET-000005": "取消暂估应收处理成功:处理成功",
"4006SALEOUTET-000006": "暂估应收处理",
"4006SALEOUTET-000007": "暂估应收处理失败:共处理",
"4006SALEOUTET-000008": "条!",
"4006SALEOUTET-000009": "取消暂估应收处理失败:共处理",
"4006SALEOUTET-000010": "条;失败"
}

View File

@ -0,0 +1,4 @@
{
"4006SALEOUTEXEQUERY-000000": "库存模块未启用,无法执行查询!",
"4006SALEOUTEXEQUERY-000001": "请选择数据!"
}

View File

@ -0,0 +1,5 @@
{
"4006SALEOUTEXESUM-000000":"财务模块未启用,无法执行查询!",
"4006SALEOUTEXESUM-000001":"库存模块未启用,无法执行查询!",
"4006SALEOUTEXESUM-000002":"存货核算模块未启用,无法执行查询!"
}

View File

@ -0,0 +1,5 @@
{
"4006SALEOUTPROFIT-000000":"财务模块未启用,无法执行查询!",
"4006SALEOUTPROFIT-000001":"库存模块未启用,无法执行查询!",
"4006SALEOUTPROFIT-000002":"存货核算模块未启用,无法执行查询!"
}

View File

@ -0,0 +1,13 @@
{
"4006SALEOUTREG-000000": "请选择要输出的单据!",
"4006SALEOUTREG-000001": "错误",
"4006SALEOUTREG-000002": "请选择要打印的订单!",
"4006SALEOUTREG-000003": "未查询出符合条件的数据",
"4006SALEOUTREG-000004": "发出商品处理成功:处理成功",
"4006SALEOUTREG-000005": "取消发出商品处理成功:处理成功",
"4006SALEOUTREG-000006": "发出商品处理",
"4006SALEOUTREG-000007": "发出商品处理失败:共处理",
"4006SALEOUTREG-000008": "条!",
"4006SALEOUTREG-000009": "取消发出商品处理失败:共处理",
"4006SALEOUTREG-000010": "条;失败"
}

View File

@ -0,0 +1,15 @@
{
"4006SALEOUTSETTLE-000000": "请选择要输出的单据!",
"4006SALEOUTSETTLE-000001": "错误",
"4006SALEOUTSETTLE-000002": "请选择要打印的订单!",
"4006SALEOUTSETTLE-000003": "未查询出符合条件的数据",
"4006SALEOUTSETTLE-000004": "出库结算成功:处理成功",
"4006SALEOUTSETTLE-000005": "取消出库对冲成功:处理成功",
"4006SALEOUTSETTLE-000006": "取消出库结算成功:处理成功",
"4006SALEOUTSETTLE-000007": "销售出库结算处理",
"4006SALEOUTSETTLE-000008": "出库结算失败:共处理",
"4006SALEOUTSETTLE-000009": "条!",
"4006SALEOUTSETTLE-000010": "取消出库结算失败:共处理",
"4006SALEOUTSETTLE-000011": "取消出库对冲失败:共处理",
"4006SALEOUTSETTLE-000012": "条;失败"
}

View File

@ -0,0 +1,59 @@
{
"4006SALEQUOTATION-000000": "请选择销售组织",
"4006SALEQUOTATION-000001": "价格模块未启用,无法询价!",
"4006SALEQUOTATION-000002": "请选择要询价的行!",
"4006SALEQUOTATION-000003": "成功",
"4006SALEQUOTATION-000004": "删除成功!",
"4006SALEQUOTATION-000005": "整单关闭成功!",
"4006SALEQUOTATION-000006": "提交成功!",
"4006SALEQUOTATION-000007": "自由",
"4006SALEQUOTATION-000008": "单据信用查询",
"4006SALEQUOTATION-000009": " 确定",
"4006SALEQUOTATION-000010": "请选择要删除的行!",
"4006SALEQUOTATION-000011": "数据已经被删除,请返回列表界面",
"4006SALEQUOTATION-000012": "刷新成功!",
"4006SALEQUOTATION-000013": "请选择行",
"4006SALEQUOTATION-000014": "历史价格查询",
"4006SALEQUOTATION-000015": "调整报价单",
"4006SALEQUOTATION-000016": "取消",
"4006SALEQUOTATION-000017": "整单打开成功!",
"4006SALEQUOTATION-000018": "价格组成",
"4006SALEQUOTATION-000019": "快速调价",
"4006SALEQUOTATION-000020": "确定",
"4006SALEQUOTATION-000021": "报价单类型不为空且报价数据来源为历史价格时,才可快速改价",
"4006SALEQUOTATION-000022": "表体行不能为空!",
"4006SALEQUOTATION-000023": "保存成功!",
"4006SALEQUOTATION-000024": "收回成功!",
"4006SALEQUOTATION-000025": "请先录入交易类型或者客户!",
"4006SALEQUOTATION-000026": "请先录入报价单类型或客户",
"4006SALEQUOTATION-000027": "报价日期不能大于失效日期",
"4006SALEQUOTATION-000028": "请先录入交易类型!",
"4006SALEQUOTATION-000029": "请先录入销售组织",
"4006SALEQUOTATION-000030": "当前单据未保存,您确认离开此页面?",
"4006SALEQUOTATION-000031": "销售报价单",
"4006SALEQUOTATION-000032": "操作",
"4006SALEQUOTATION-000033": "价格指数%",
"4006SALEQUOTATION-000034": "格式错误",
"4006SALEQUOTATION-000035": "价格加成",
"4006SALEQUOTATION-000036": "请注意",
"4006SALEQUOTATION-000037": "请选择要关闭的订单!",
"4006SALEQUOTATION-000038": "关闭成功!",
"4006SALEQUOTATION-000039": "提交",
"4006SALEQUOTATION-000040": "请选择要打开的订单!",
"4006SALEQUOTATION-000041": "打开成功!",
"4006SALEQUOTATION-000042": "请选择订单!",
"4006SALEQUOTATION-000043": "请选择要提交的订单!",
"4006SALEQUOTATION-000044": "错误",
"4006SALEQUOTATION-000045": "请选择要操作的订单",
"4006SALEQUOTATION-000046": "请选择要删除的订单!",
"4006SALEQUOTATION-000047": "请选择要输出的订单!",
"4006SALEQUOTATION-000048": "请先选择数据",
"4006SALEQUOTATION-000049": "请选择要打印的订单!",
"4006SALEQUOTATION-000050": "指派",
"4006SALEQUOTATION-000051": "确定要删除吗?",
"4006SALEQUOTATION-000052": "收回",
"4006SALEQUOTATION-000053": "打开",
"4006SALEQUOTATION-000054": "关闭",
"4006SALEQUOTATION-000055": "删除",
"4006SALEQUOTATION-000056": "当前行没有价格组成信息"
}

View File

@ -0,0 +1,42 @@
{
"4006sellingrequistion-000000": "请先录入交易类型或者客户!",
"4006sellingrequistion-000001": "确认修改",
"4006sellingrequistion-000002": "是否清除销售组织,这样会清空您录入的信息?",
"4006sellingrequistion-000003": "已生成下游订单,不允许修订!",
"4006sellingrequistion-000004": "不允许修订!",
"4006sellingrequistion-000005": "请先录入交易类型!",
"4006sellingrequistion-000006": "客户、销售组织、物料、库存组织不能为空!",
"4006sellingrequistion-000007": "请先录入物料信息",
"4006sellingrequistion-000008": "单据信用查询",
"4006sellingrequistion-000009": "确定",
"4006sellingrequistion-000010": "删除成功",
"4006sellingrequistion-000011": "已生成下游单据不允许删行",
"4006sellingrequistion-000012": "请选择要询价的行!",
"4006sellingrequistion-000013": "没有数据",
"4006sellingrequistion-000014": "当前行没有价格组成信息",
"4006sellingrequistion-000015": "价格组成信息",
"4006sellingrequistion-000016": "毛利预估分析",
"4006sellingrequistion-000017": "表体数据为空,不允许保存",
"4006sellingrequistion-000018": "保存提交成功!",
"4006sellingrequistion-000019": "保存成功!",
"4006sellingrequistion-000020": "当前单据未保存,您确认离开此页面?",
"4006sellingrequistion-000021": "指派",
"4006sellingrequistion-000022": "操作",
"4006sellingrequistion-000023": "行备注",
"4006sellingrequistion-000024": "请选择数据",
"4006sellingrequistion-000025": "没有可处理的单据!",
"4006sellingrequistion-000026": "整单关闭成功",
"4006sellingrequistion-000027": "提交成功",
"4006sellingrequistion-000028": "错误,",
"4006sellingrequistion-000029": "请选择要操作的订单!",
"4006sellingrequistion-000030": "整单打开成功",
"4006sellingrequistion-000031": " 请选择数据",
"4006sellingrequistion-000032": "收回成功",
"4006sellingrequistion-000033": "确定要删除吗?",
"4006sellingrequistion-000034": "不询价",
"4006sellingrequistion-000035": "价格0",
"4006sellingrequistion-000036": "调整折扣",
"4006sellingrequistion-000037": "打开成功",
"4006sellingrequistion-000038": "关闭成功",
"4006sellingrequistion-000039": "批次号"
}

View File

@ -0,0 +1,23 @@
{
"4006SELLINGREQUISTIONARRANGE-000000": "返回",
"4006SELLINGREQUISTIONARRANGE-000001": "有未保存的单据,确定要返回吗?",
"4006SELLINGREQUISTIONARRANGE-000002": "确定",
"4006SELLINGREQUISTIONARRANGE-000003": "取消",
"4006SELLINGREQUISTIONARRANGE-000004": "确认退出转单",
"4006SELLINGREQUISTIONARRANGE-000005": "错误",
"4006SELLINGREQUISTIONARRANGE-000006": "请选择单据。",
"4006SELLINGREQUISTIONARRANGE-000007": "操作成功",
"4006SELLINGREQUISTIONARRANGE-000008": "当前单据未保存,您确认离开此页面?",
"4006SELLINGREQUISTIONARRANGE-000009": "发货安排",
"4006SELLINGREQUISTIONARRANGE-000010": "操作",
"4006SELLINGREQUISTIONARRANGE-000011": "未查到数据",
"4006SELLINGREQUISTIONARRANGE-000012": "点击了",
"4006SELLINGREQUISTIONARRANGE-000013": "预订单",
"4006SELLINGREQUISTIONARRANGE-000014": "安排",
"4006SELLINGREQUISTIONARRANGE-000015": "单据号",
"4006SELLINGREQUISTIONARRANGE-000016": "已经发货关闭,不能安排。",
"4006SELLINGREQUISTIONARRANGE-000017": "调拨订单",
"4006SELLINGREQUISTIONARRANGE-000018": "待发货安排主数量",
"4006SELLINGREQUISTIONARRANGE-000019": "退出转单",
"4006SELLINGREQUISTIONARRANGE-000020": "有未保存的单据,确定要退出转单吗?"
}

View File

@ -0,0 +1,23 @@
{
"4006SENDARRANGE-000000": "返回",
"4006SENDARRANGE-000001": "有未保存的单据,确定要返回吗?",
"4006SENDARRANGE-000002": "确定",
"4006SENDARRANGE-000003": "取消",
"4006SENDARRANGE-000004": "确认退出转单",
"4006SENDARRANGE-000005": "错误",
"4006SENDARRANGE-000006": "请选择单据。",
"4006SENDARRANGE-000007": "操作成功",
"4006SENDARRANGE-000008": "当前单据未保存,您确认离开此页面?",
"4006SENDARRANGE-000009": "发货安排",
"4006SENDARRANGE-000010": "操作",
"4006SENDARRANGE-000011": "未查到数据",
"4006SENDARRANGE-000012": "点击了",
"4006SENDARRANGE-000013": "销售订单",
"4006SENDARRANGE-000014": "安排",
"4006SENDARRANGE-000015": "单据号",
"4006SENDARRANGE-000016": "已经发货关闭,不能安排。",
"4006SENDARRANGE-000017": "调拨订单",
"4006SENDARRANGE-000018": "待发货安排主数量",
"4006SENDARRANGE-000019": "退出转单",
"4006SENDARRANGE-000020": "有未保存的单据,确定要退出转单吗?"
}

View File

@ -0,0 +1,15 @@
{
"4006SOBALANCE-000000": "取消",
"4006SOBALANCE-000001": "确定要取消吗?",
"4006SOBALANCE-000002": "请选择要删除的行!",
"4006SOBALANCE-000003": "保存成功!",
"4006SOBALANCE-000004": "当前单据未保存,您确认离开此页面?",
"4006SOBALANCE-000005": "数据已经被删除,请返回列表界面!",
"4006SOBALANCE-000006": "订单收款核销",
"4006SOBALANCE-000007": "操作",
"4006SOBALANCE-000008": "错误",
"4006SOBALANCE-000009": "请选择要打印的订单!",
"4006SOBALANCE-000010": "请注意",
"4006SOBALANCE-000011": "无符合条件数据",
"4006SOBALANCE-000012": "刷新成功"
}

View File

@ -0,0 +1,17 @@
{
"4006TRANMATREL-000000": "请选择销售组织",
"4006TRANMATREL-000001": "允许销售",
"4006TRANMATREL-000002": "确认取消",
"4006TRANMATREL-000003": "是否确认要取消?",
"4006TRANMATREL-000004": "确认删除",
"4006TRANMATREL-000005": "确定要删除所选数据吗?",
"4006TRANMATREL-000006": "删除成功!",
"4006TRANMATREL-000007": "表体不可为空!",
"4006TRANMATREL-000008": "保存成功",
"4006TRANMATREL-000009": "销售组织",
"4006TRANMATREL-000010": "订单类型与物料关系设置",
"4006TRANMATREL-000011": "物料销售分类",
"4006TRANMATREL-000012": "操作",
"4006TRANMATREL-000013": "刷新成功!",
"4006TRANMATREL-000014": "当前单据未保存,您确认离开此页面?"
}

View File

@ -0,0 +1,4 @@
{
"4006WIDGET-000000": "销售业绩地图",
"4006WIDGET-000001": "销售额(万元)"
}

View File

@ -0,0 +1,19 @@
{
"4006WORKDESKTOP-000000": "客户",
"4006WORKDESKTOP-000001": "物料",
"4006WORKDESKTOP-000002": "我的业绩",
"4006WORKDESKTOP-000003": "业绩概览",
"4006WORKDESKTOP-000004": "单位",
"4006WORKDESKTOP-000005": "万元",
"4006WORKDESKTOP-000006": "明细",
"4006WORKDESKTOP-000007": "订单销售额",
"4006WORKDESKTOP-000008": "出库金额",
"4006WORKDESKTOP-000009": "开票金额",
"4006WORKDESKTOP-000010": "收款金额",
"4006WORKDESKTOP-000011": "应收核销金额",
"4006WORKDESKTOP-000012": "销售排行榜",
"4006WORKDESKTOP-000013": "销售额",
"4006WORKDESKTOP-000014": "业务员",
"4006WORKDESKTOP-000015": "销售员",
"4006WORKDESKTOP-000016": "销售概览"
}

View File

@ -0,0 +1,3 @@
{
}

View File

@ -0,0 +1,5 @@
{
"refer-HLH1SO02-000001": "销售订单状态",
"refer-HLH1SO02-000002": "编码",
"refer-HLH1SO02-000003": "名称"
}

View File

@ -0,0 +1,5 @@
{
"refer-HLH1SO02-000001": "销售订单状态",
"refer-HLH1SO02-000002": "编码",
"refer-HLH1SO02-000003": "名称"
}

View File

@ -0,0 +1,13 @@
{
"REFER-000000": "退货政策",
"REFER-000001": "退货政策编码",
"REFER-000002": "退货政策名称",
"REFER-000003": "退货原因",
"REFER-000004": "退货原因编码",
"REFER-000005": "退货原因名称",
"REFER-000006": "退货条件",
"REFER-000007": "退货条件编码",
"REFER-000008": "退货条件名称",
"REFER-000009": "退货条件表达式名称",
"REFER-000010": "退货条件表述"
}

View File

@ -0,0 +1,22 @@
import {high} from 'nc-lightapp-front';
const {Refer} = high;
export default function (props = {}) {
var conf = {
multiLang: {
domainName: 'so',
currentLocale: 'zh-CN',
moduleId: '400600424_DefaultGridRef',
},
refType: 'grid',
refName: 'refer-400600424-000001',
placeholder: 'refer-400600424-000001',
columnConfig: [{name: ['refer-400600424-000002', 'refer-400600424-000003'], code: ['refcode', 'refname']}],
refCode: 'so.Mrckqklr.MrckqklrMasterDefaultGridRefAction',
queryGridUrl: '/nccloud/so/Mrckqklr/MrckqklrMasterDefaultGridRefAction.do',
};
return <Refer {...conf} {...props} />
}

View File

@ -0,0 +1,22 @@
import {high} from 'nc-lightapp-front';
const {Refer} = high;
export default function (props = {}) {
var conf = {
multiLang: {
domainName: 'so',
currentLocale: 'zh-CN',
moduleId: '400600424_GridRef',
},
refType: 'grid',
refName: 'refer-400600424-000001',
placeholder: '每日出库情况录入',
columnConfig: [{name: ['refer-400600424-000002', 'refer-400600424-000003'], code: ['refcode', 'refname']}],
refCode: 'so.refer.Mrckqklr.MrckqklrMasterGridRef',
queryGridUrl: '/nccloud/so/Mrckqklr/MrckqklrMasterGridRefAction.do',
};
return <Refer {...conf} {...props} />
}

View File

@ -0,0 +1,22 @@
import {high} from 'nc-lightapp-front';
const {Refer} = high;
export default function (props = {}) {
var conf = {
multiLang: {
domainName: 'so',
currentLocale: 'zh-CN',
moduleId: 'HLH1SO02_DefaultGridRef',
},
refType: 'grid',
refName: 'refer-HLH1SO02-000001',
placeholder: 'refer-HLH1SO02-000001',
columnConfig: [{name: ['refer-HLH1SO02-000002', 'refer-HLH1SO02-000003'], code: ['refcode', 'refname']}],
refCode: 'so.soStatus.SoStatusDefaultGridRefAction',
queryGridUrl: '/nccloud/so/soStatus/SoStatusDefaultGridRefAction.do',
};
return <Refer {...conf} {...props} />
}

View File

@ -0,0 +1,22 @@
import {high} from 'nc-lightapp-front';
const {Refer} = high;
export default function (props = {}) {
var conf = {
multiLang: {
domainName: 'so',
currentLocale: 'zh-CN',
moduleId: 'HLH1SO02_GridRef',
},
refType: 'grid',
refName: 'refer-HLH1SO02-000001',
placeholder: '销售订单状态',
columnConfig: [{name: ['refer-HLH1SO02-000002', 'refer-HLH1SO02-000003'], code: ['refcode', 'refname']}],
refCode: 'so.refer.soStatus.soStatusGridRef',
queryGridUrl: '/nccloud/so/soStatus/SoStatusGridRefAction.do',
};
return <Refer {...conf} {...props} />
}

View File

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<title> Application </title>
<link rel="stylesheet" href="../../../../platform/api/index.css" />
<link rel="stylesheet" href="../../../../platform/base/index.css" />
<link rel="stylesheet" href="../../../../platform/components/index.css" />
<link rel="stylesheet" href="../../../../platform/form/index.css" />
<link rel="stylesheet" href="../../../../platform/table-core/index.css" />
<link rel="stylesheet" href="../../../../platform/simple-table/index.css" />
<link rel="stylesheet" href="../../../../platform/edit-table/index.css" />
<link rel="stylesheet" href="../../../../platform/card-table/index.css" />
<link rel="stylesheet" href="../../../../platform/transfer-table/index.css" />
<link rel="stylesheet" href="../../../../platform/tree-table/index.css" />
<link rel="stylesheet" href="../../../../platform/nc-lightapp-front.css" />
<script type="text/javascript" src="../../../../platform/resource/yonyou-yyy.js"></script>
</head>
<body>
<div id="app"></div>
<script src="../../../../platform/resource/polyfill.js"></script>
<script src="../../../../platform/library/index.js"></script>
<script src="../../../../platform/resource/ca/ca0.js"></script>
<script src="../../../../platform/resource/ca/ca1.js"></script>
<script src="../../../../platform/resource/ca/ca2.js"></script>
<script src="../../../../platform/resource/ca/nccsign.js"></script>
<script src="../../../../platform/resource/ca/sha256.js"></script>
<script src="../../../../platform/api/index.js"></script>
<script src="../../../../platform/base/index.js"></script>
<script src="../../../../platform/template/index.js"></script>
<script src="../../../../platform/form/index.js"></script>
<script src="../../../../platform/table-core/index.js"></script>
<script src="../../../../platform/simple-table/index.js"></script>
<script src="../../../../platform/edit-table/index.js"></script>
<script src="../../../../platform/card-table/index.js"></script>
<script src="../../../../platform/transfer-table/index.js"></script>
<script src="../../../../platform/tree-table/index.js"></script>
<script src="../../../../platform/components/index.js"></script>
<script src="../../../../platform/nc-lightapp-front.js"></script>
<script type="text/javascript" src="../../../../so/so/components/custcreditquery/index.js"></script></body>

View File

@ -0,0 +1,3 @@
/*! @ncctag {"project":"","branch":"","provider":"","date":"2022-7-15 19:26:49"} */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("nc-lightapp-front"),require("react")):"function"==typeof define&&define.amd?define(["nc-lightapp-front","react"],t):"object"==typeof exports?exports["so/so/components/custcreditquery/index"]=t(require("nc-lightapp-front"),require("react")):e["so/so/components/custcreditquery/index"]=t(e["nc-lightapp-front"],e.React)}(window,(function(e,t){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="../../../../",r(r.s=237)}({2:function(t,r){t.exports=e},237:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o,n=function(){function e(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,r,o){return r&&e(t.prototype,r),o&&e(t,o),t}}(),i=r(5),u=(o=i)&&o.__esModule?o:{default:o},l=r(2),a=r(238);var c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r.state={},e.use.editTable("creditqueryinfo"),a.initTemplate.call(r,r.props),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:"render",value:function(){var e=this.props.editTable.createEditTable;return u.default.createElement("div",{className:"nc-bill-list flex-container"},e("creditqueryinfo",{cancelCustomRightMenu:!0}))}}]),t}(i.Component);c=(0,l.createPage)({})(c),t.default=c},238:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initTemplate=void 0;var o,n=r(239),i=(o=n)&&o.__esModule?o:{default:o};t.initTemplate=i.default},239:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=this;(0,o.ajax)({url:" /nccloud/platform/templet/querypage.do",data:{appcode:i,pagecode:n},success:function(r){var o=r.data;e.meta.setMeta(o,l.bind(t))}})};var o=r(2),n="403200006_creditquery",i="403200006",u="creditqueryinfo";function l(){var e=null;e=null==this.props.billQueryPara||null==this.props.billQueryPara?{rows:[]}:this.props.billQueryPara[u],this.props.editTable.setTableData(u,e),a.call(this,e)}function a(e){if(null!=e&&null!=e){var t=!1,r=!1,o=!1;e.rows.forEach((function(e){e.values.csaleorgid.value&&(t=!0),e.values.cdeptid.value&&(r=!0),e.values.cemployeeid.value&&(o=!0)})),t?this.props.editTable.showColByKey(u,"csaleorgid"):this.props.editTable.hideColByKey(u,"csaleorgid"),r?this.props.editTable.showColByKey(u,"cdeptid"):this.props.editTable.hideColByKey(u,"cdeptid"),o?this.props.editTable.showColByKey(u,"cemployeeid"):this.props.editTable.hideColByKey(u,"cemployeeid")}}},5:function(e,r){e.exports=t}})}));
//# sourceMappingURL=index.js.map

View File

@ -0,0 +1,114 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
/*
* @Author: 刘奇
* @PageInfo: 常量类
* @Date: 2018-05-22 19:25:02
* @Last Modified by: 刘奇
* @Last Modified time: 2019-08-30 14:07:47
*/
// 区域ID
const AREA = {
//销售订单列表界面区域
saleorderPageArea: '400600400_direct',
saleorderHeadTableArea: 'head',
saleorderBodyTableArea: 'so_saleorder_b',
saleorderSearchArea: 'saleorderSearch',
saleorderViewTableArea: 'saleorderview',
appcode: '400600400',
saleorderAppid: '0001Z81000000005GAEH',
transferorderPagecode: '400900800_transfercard', //调拨订单
transferorderAppcode: '400900800',
poorderPagecode: '400400800_card', //采购订单
poorderAppcode: '400400800',
praybillPagecode: '400400400_card', //请购单
praybillAppcode: '400400400',
transferinPagecode: '400900400_card', //调入申请
transferinAppcode: '400900400',
dataSource: 'scm.so.directarrange.main',
directarrangeAppcode: '400600810'
};
const PK = {
saleorderHeadPK: 'csaleorderid',
saleorderBodyPK: 'csaleorderbid'
};
//页面状态
const STATUS = {
browse: 'browse',
edit: 'edit'
};
const BILLTYPE = {
saleorder: '30',
tobill: '5X',
transferin: '5A',
praybill: '20',
poorder: '21'
};
//按钮名称以及区域
const BUTTON = {
list_head: 'list_head', //列表表头区域
list_inner: 'list_inner', //列表行操作区域
card_head: 'card_head', //卡片表头区域
card_body: 'card_body', //卡片表体肩区域
card_body_inner: 'card_body_inner', //卡片表体行操作区域
add: 'Add', //新增
delete: 'Delete', //删除
edit: 'Edit', //修改
save: 'Save', //保存
show: 'Show', //查看
cancel: 'Cancel', //取消
copy: 'Copy', //复制
commit: 'Commit', //提交
unCommit: 'UnCommit', //取消提交
deleteLine: 'DeleteLine', //删行|移除
addLine: 'AddLine', //增行
refresh: 'Refresh', //刷新
queryAboutBusiness: 'QueryAboutBusiness', //单据追溯
directAllot: 'DirectAllot', //直运调拨
saleOrderTO5A: '30TO5A', //调入申请
saleOrderTO5X: '30TO5X', //调拨订单
directPurchase: 'DirectPurchase', //直运采购
saleOrderTO20: '30TO20', //请购单
saleOrderTO21: '30TO21', //采购订单
onhandQuery: 'OnhandQuery', //存量查拣
billReturn: 'BillReturn' //退出转单
};
//请求URL地址
const URL = {
list_url: '/so/so/directarrange/list/index.html',
querySaleorder: '/nccloud/so/directarrange/querysaleorder.do',
queryById: '/nccloud/so/directarrange/querybyid.do',
checkBill: '/nccloud/so/directarrange/checkbill.do', //检查选中单据是否可以进行推单
onhandQuery: '/nccloud/so/directarrange/onhandquery.do', //存量查检
praybillCard: '400400400_card', //请购单
transferinCard: '400900400_card', //调入申请
poorderCard: '400400800_card', //采购订单
transferorderCard: '400900800_card' //调拨订单
};
// 参数
const FIELD = {
queryIdInfo: 'directArrangeSrcIds', //缓存-查询条件对应的key-根据id查询
querySchemeInfo: 'saleOrderQueryInfo', //缓存-查询条件对应的key-根据查询条件查询
broadcastKey: 'directarrange', //浏览器页签间数据传输的key
pk_org: 'pk_org', // 销售组织
ctrantypeid: 'ctrantypeid', //交易类型
cmaterialid: 'so_saleorder_b.cmaterialid', //物料
pk_marbasclass: 'so_saleorder_b.cmaterialid.pk_marbasclass', //物料基本分类
pk_marsaleclass: 'so_saleorder_b.cmaterialvid.materialsale.pk_marsaleclass', //物料销售分类
ccustomerid: 'ccustomerid', //客户
pk_custclass: 'ccustomerid.pk_custclass', //客户基本分类
pk_custsaleclass: 'ccustomerid.sales.pk_custsaleclass', //客户销售分类
chreceivecustid: 'chreceivecustid', //收货客户
pk_areacl: 'ccustomerid.pk_areacl', //地区分类
cemployeeid: 'cemployeeid', //业务员
cdeptid: 'cdeptid', //部门
csendstockorgid: 'so_saleorder_b.csendstockorgid', //库存组织
vbillcode: 'vbillcode', //单据号
csendstordocid: 'so_saleorder_b.csendstordocid' //发货仓库
};
export { AREA, STATUS, URL, BUTTON, PK, BILLTYPE, FIELD };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,6 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import search_afterEvent from './search_afterEvent';
export { search_afterEvent };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,81 @@
/*/2vMRk3mTJIpvfMIoJVK6JoXb7FKBrayYoYumXHf/AQ=*/
/*
* @Author: 刘奇
* @PageInfo: 查询区编辑后
* @Date: 2018-07-30 13:30:56
* @Last Modified by: 刘奇
* @Last Modified time: 2018-08-29 20:06:57
*/
import { AREA, FIELD } from '../../constance';
import MultiCorpRefHandler from '../../../../../scmpub/scmpub/pub/tool/MultiCorpRefHandler';
export default function(key, val) {
//物料相关、客户、收货客户、业务员、部门依赖于销售组织
if (key == FIELD.pk_org) {
MultiCorpRefHandler(this.props, val, AREA.saleorderSearchArea, [
FIELD.cmaterialid,
FIELD.pk_marbasclass,
FIELD.pk_marsaleclass,
FIELD.ccustomerid,
FIELD.chreceivecustid,
FIELD.cemployeeid,
FIELD.cdeptid,
'vdef1',
'vdef2',
'vdef3',
'vdef4',
'vdef5',
'vdef6',
'vdef7',
'vdef8',
'vdef9',
'vdef10',
'vdef11',
'vdef12',
'vdef13',
'vdef14',
'vdef15',
'vdef16',
'vdef17',
'vdef18',
'vdef19',
'vdef20',
'so_saleorder_b.vfree1',
'so_saleorder_b.vfree2',
'so_saleorder_b.vfree3',
'so_saleorder_b.vfree4',
'so_saleorder_b.vfree5',
'so_saleorder_b.vfree6',
'so_saleorder_b.vfree7',
'so_saleorder_b.vfree8',
'so_saleorder_b.vfree9',
'so_saleorder_b.vfree10',
'so_saleorder_b.vbdef1',
'so_saleorder_b.vbdef2',
'so_saleorder_b.vbdef3',
'so_saleorder_b.vbdef4',
'so_saleorder_b.vbdef5',
'so_saleorder_b.vbdef6',
'so_saleorder_b.vbdef7',
'so_saleorder_b.vbdef8',
'so_saleorder_b.vbdef9',
'so_saleorder_b.vbdef10',
'so_saleorder_b.vbdef11',
'so_saleorder_b.vbdef12',
'so_saleorder_b.vbdef13',
'so_saleorder_b.vbdef14',
'so_saleorder_b.vbdef15',
'so_saleorder_b.vbdef16',
'so_saleorder_b.vbdef17',
'so_saleorder_b.vbdef18',
'so_saleorder_b.vbdef19',
'so_saleorder_b.vbdef20'
]);
}
//仓库依赖于库存组织
if (key == FIELD.csendstockorgid) {
MultiCorpRefHandler(this.props, val, AREA.saleorderSearchArea, [ FIELD.csendstordocid ]);
}
}
/*/2vMRk3mTJIpvfMIoJVK6JoXb7FKBrayYoYumXHf/AQ=*/

View File

@ -0,0 +1,9 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import serach_btnClick from './serach_btnClick';
import onList_BtnClicks from './onList_BtnClicks';
import queryAboutBusiness_BtnClick from './queryAboutBusiness_BtnClick';
import selectOrg_BtnClick from './selectOrg_BtnClick';
export { serach_btnClick, onList_BtnClicks, queryAboutBusiness_BtnClick, selectOrg_BtnClick };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,37 @@
/*9LNhEcWwOPqFwoyI0rg5TsQrYXXBKSEGg1J5PxCxbRE=*/
/*
* @Author: 刘奇
* @PageInfo: 按钮处理
* @Date: 2018-05-08 16:13:15
* @Last Modified by: 刘奇
* @Last Modified time: 2019-01-17 14:26:13
*/
import { serach_btnClick, queryAboutBusiness_BtnClick, selectOrg_BtnClick } from './index.js';
import { BUTTON } from '../../constance';
export default function onList_BtnClicks(props, btncode) {
switch (btncode) {
case BUTTON.saleOrderTO5A:
selectOrg_BtnClick.call(this, props, btncode);
break;
case BUTTON.saleOrderTO5X:
selectOrg_BtnClick.call(this, props, btncode);
break;
case BUTTON.saleOrderTO20:
selectOrg_BtnClick.call(this, props, btncode);
break;
case BUTTON.saleOrderTO21:
selectOrg_BtnClick.call(this, props, btncode);
break;
case BUTTON.queryAboutBusiness:
queryAboutBusiness_BtnClick.call(this, props);
break;
case BUTTON.refresh:
serach_btnClick.call(this, props, true);
break;
case BUTTON.onhandQuery:
this.onHandBtnClick.call(this, props);
break;
}
}
/*9LNhEcWwOPqFwoyI0rg5TsQrYXXBKSEGg1J5PxCxbRE=*/

View File

@ -0,0 +1,24 @@
/*3cjkzddTzmjKg1w3pNM0S0ZBhi5JPS/p9wZYN8pt7TIfHQPRvCAlAtqtlnqrvzxX*/
/*
* @Author: 刘奇
* @PageInfo: 单据追溯
* @Date: 2018-06-29 10:09:36
* @Last Modified by: 刘奇
* @Last Modified time: 2019-01-17 14:20:54
*/
import { AREA } from '../../constance';
import { showWarningInfo } from '../../../../../scmpub/scmpub/pub/tool/messageUtil.js';
import { getLangByResId } from '../../../../../scmpub/scmpub/pub/tool/multiLangUtil';
export default function queryAboutBusiness_BtnClick(props) {
let data = props.transferTable.getTransferTableSelectedValue();
if (data.length == 0) {
showWarningInfo(null, getLangByResId(this, '4006DIRECTARRANGE-000001')); /* 国际化处理: 请选择一行记录*/
return;
}
let csaleorderid =
data[AREA.saleorderHeadTableArea][0]['head'][AREA.saleorderHeadTableArea].rows[0].values.csaleorderid.value;
this.setState({ showBillTrack: true, billid: csaleorderid });
}
/*3cjkzddTzmjKg1w3pNM0S0ZBhi5JPS/p9wZYN8pt7TIfHQPRvCAlAtqtlnqrvzxX*/

View File

@ -0,0 +1,165 @@
/*DOf9El+P4mYxGBxXlb6hvAzk3Ieffqk+p/BsK2rB70s=*/
/*
* @Author: 刘奇
* @PageInfo: 根据条件判断是否需要弹出主组织
* @Date: 2018-07-10 14:13:13
* @Last Modified by: 刘奇
* @Last Modified time: 2019-07-19 11:28:45
*/
import { ajax } from 'nc-lightapp-front';
import { AREA, URL, BUTTON, BILLTYPE, FIELD, PK } from '../../constance';
import MainOrgRef from 'scmpub/scmpub/components/MainOrgRef';
import { showWarningInfo, showErrorDialog } from '../../../../../scmpub/scmpub/pub/tool/messageUtil.js';
import { setDefData } from '../../../../../scmpub/scmpub/pub/cache';
import { getLangByResId } from '../../../../../scmpub/scmpub/pub/tool/multiLangUtil';
export default function selectOrg_BtnClick(props, btncode) {
this.org = {};
this.placeholderName = '';
this.refPath = '';
this.tobillUrl = '';
this.pagecode = '';
this.appcode = '';
this.dataType = '4006';
this.btncode = btncode;
this.destBillType = '';
if (btncode == BUTTON.saleOrderTO20) {
this.tobillUrl = URL.praybillCard;
this.pagecode = AREA.praybillPagecode;
this.appcode = AREA.praybillAppcode;
this.dataType = '4004';
this.destBillType = BILLTYPE.praybill;
} else if (btncode == BUTTON.saleOrderTO21) {
this.placeholderName = getLangByResId(this, '4006DIRECTARRANGE-000002'); /* 国际化处理: 采购组织*/
this.refPath = 'org/PurchaseOrgGridRef';
this.tobillUrl = URL.poorderCard;
this.pagecode = AREA.poorderPagecode;
this.appcode = AREA.poorderAppcode;
this.dataType = '4004';
this.destBillType = BILLTYPE.poorder;
} else if (btncode == BUTTON.saleOrderTO5A) {
this.tobillUrl = URL.transferinCard;
this.pagecode = AREA.transferinPagecode;
this.appcode = AREA.transferinAppcode;
this.dataType = '4009';
this.destBillType = BILLTYPE.transferin;
} else if (btncode == BUTTON.saleOrderTO5X) {
this.placeholderName = getLangByResId(this, '4006DIRECTARRANGE-000003'); /* 国际化处理: 调出库存组织*/
this.refPath = 'org/StockOrgGridRef';
this.tobillUrl = URL.transferorderCard;
this.pagecode = AREA.transferorderPagecode;
this.appcode = AREA.transferorderAppcode;
this.dataType = '4009';
this.destBillType = BILLTYPE.tobill;
}
this.props.transferTable.whenTransferTableUnmount(AREA.dataSource);
ajax({
url: '/nccloud/scmpub/pub/sysinitgroup.do',
data: [this.dataType],
success: (res) => {
if (res.success) {
if (res.data[this.dataType]) {
checkbill.call(this);
} else {
showErrorDialog(null, getLangByResId(this, '4006DIRECTARRANGE-000004')); /* 国际化处理: 请启用相应模块!*/
}
}
}
});
}
function checkbill() {
if (this.tobillUrl == URL.praybillCard || this.tobillUrl == URL.transferinCard) {
toDirectArrange.call(this, null);
} else {
// 弹出选择组织的框
this.props.modal.show('MessageDlg', {
title: `${getLangByResId(this, '4006DIRECTARRANGE-000008')}${this.placeholderName}`, // 弹框表头信息/* 国际化处理: 选择*/
userControl: true, //用户自己控制是否关掉弹出框
content: (
<div className="select-org">
<span>{this.placeholderName}: </span>
<MainOrgRef
placeholder={this.placeholderName}
refPath={this.refPath}
refName={this.placeholderName}
onChange={handleChange.bind(this)}
className="title-search-detail"
// 主组织过滤
queryCondition={() => {
return {
GridRefActionExt: 'nccloud.web.scmpub.ref.AppPermissionOrgRefFilter'
};
}}
/>
</div>
), //弹框内容可以是字符串或dom
closeModalEve: close.bind(this),
cancelBtnClick: close.bind(this),
leftBtnName: getLangByResId(this, '4006DIRECTARRANGE-000005') /* 国际化处理: 确定*/,
rightBtnName: getLangByResId(this, '4006DIRECTARRANGE-000006') /* 国际化处理: 取消*/,
beSureBtnClick: beSure_BtnClick.bind(this) //点击确定按钮事件
});
}
}
function close() {
this.props.modal.close('MessageDlg');
}
function handleChange(val) {
this.org = val;
}
function beSure_BtnClick() {
if (this.org == {} || this.org == null || this.org.refpk == undefined) {
showWarningInfo(null, getLangByResId(this, '4006DIRECTARRANGE-000007')); /* 国际化处理: 安排的组织或者工厂不能为空。*/
return;
}
this.props.modal.close('MessageDlg');
toDirectArrange.call(this, this.org.refpk);
}
function toDirectArrange(org) {
let selectData = this.props.transferTable.getTransferTableSelectedValue();
let pks = [];
let transtype = '';
for (let head of selectData[AREA.saleorderHeadTableArea]) {
if (head.body[AREA.saleorderBodyTableArea]) {
if (head.body[AREA.saleorderBodyTableArea].rows) {
for (let row of head.body[AREA.saleorderBodyTableArea].rows) {
pks.push(row.values[PK.saleorderBodyPK].value);
}
transtype = head.head[AREA.saleorderHeadTableArea].rows[0].values['vtrantypecode'].value;
}
}
}
let data = {
ids: pks,
pk_org: org,
type: this.destBillType,
transtype: transtype,
vsrctype: this.tabType
};
let vsrcAppcode = this.props.getSearchParam('c');
ajax({
url: URL.checkBill,
data: data,
success: (res) => {
if (res.success && res.error == null) {
let pushdata = res.data[0];
// setDefData(AREA.dataSource, 'directArrangeIds', pks);
this.props.openTo(null, {
pagecode: this.tobillUrl,
appcode: pushdata.appcode,
orgid: org,
channelType: 'directarrange',
vsrctype: this.tabType,
vsrcAppcode: vsrcAppcode,
channelAddress: 'list',
status: 'edit',
directArrangeIds: JSON.stringify(pks)
});
}
}
});
return;
}
/*DOf9El+P4mYxGBxXlb6hvAzk3Ieffqk+p/BsK2rB70s=*/

View File

@ -0,0 +1,87 @@
/*AoVDPsUWhd0K5LgkkiCY1UfDlur2qGtFjgKPljIzAEg=*/
/*
* @Author: zhangjyp
* @PageInfo: 查询按钮处理方法
* @Date: 2018-04-19 10:33:09
* @Last Modified by: 刘奇
* @Last Modified time: 2019-06-13 09:58:03
*/
import { AREA, PK, URL, FIELD, BILLTYPE } from '../../constance';
import { ajax } from 'nc-lightapp-front';
import { getDefData, setDefData } from '../../../../../scmpub/scmpub/pub/cache';
import {
showWarningInfo,
showHasQueryResultInfo,
showNoQueryResultInfo,
showRefreshInfo
} from '../../../../../scmpub/scmpub/pub/tool/messageUtil.js';
import { buttonControl } from '../viewController/buttonController';
export default function serach_btnClick(props, isRefresh) {
let data = {};
if (isRefresh == true) {
data = getDefData(AREA.dataSource, FIELD.queryIdInfo);
if (data) {
data.type = BILLTYPE.saleorder;
this.queryByIds(data, data.type);
return;
} else {
data = getDefData(AREA.dataSource, FIELD.querySchemeInfo);
}
} else {
data = this.props.search.getQueryInfo(AREA.saleorderSearchArea);
}
if (!data.querycondition) {
return;
}
ajax({
url: URL.querySaleorder,
data: data,
success: (res) => {
if (res.success) {
if (res.data && res.data.result) {
this.props.transferTable.setTransferTableValue(
AREA.saleorderHeadTableArea,
AREA.saleorderBodyTableArea,
res.data.result,
PK.saleorderHeadPK,
PK.saleorderBodyPK
);
if (res.data && res.data.message) {
showWarningInfo(null, res.data.message);
} else {
if (isRefresh == true) {
showRefreshInfo();
} else {
showHasQueryResultInfo(res.data.result.length);
}
}
} else {
this.props.transferTable.setTransferTableValue(
AREA.saleorderHeadTableArea,
AREA.saleorderBodyTableArea,
{ rows: [] },
PK.saleorderHeadPK,
PK.saleorderBodyPK
);
if (isRefresh == true) {
showRefreshInfo();
} else {
showNoQueryResultInfo();
}
}
if (isRefresh != true) {
setDefData(AREA.dataSource, FIELD.queryIdInfo, null);
setDefData(AREA.dataSource, FIELD.querySchemeInfo, data);
}
this.setState({
ntotalnum: 0
});
buttonControl.call(this);
}
}
});
}
/*AoVDPsUWhd0K5LgkkiCY1UfDlur2qGtFjgKPljIzAEg=*/

View File

@ -0,0 +1,270 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
/*
* @Author: wangceb
* @PageInfo: 直运安排主界面
*
* @Date: 2018-06-14 16:20:44
* @Last Modified by: liulux
* @Last Modified time: 2022-04-26 12:30:03
*/
import React, { Component } from 'react';
import { base, createPage, ajax, cacheTools, high, broadcast } from 'nc-lightapp-front';
import { AREA, BUTTON, BILLTYPE, URL, PK, FIELD } from '../constance';
import { initTemplate } from './init';
import { serach_btnClick, onList_BtnClicks } from './btnClicks';
import { search_afterEvent } from './afterEvents';
import ExtendRefer from 'ic/ic/components/onhandRefer';
import { renderCompleteEvent } from '../../pub/queryarea/queryAreaInit';
import { setDefData } from '../../../../scmpub/scmpub/pub/cache';
import { calTotalForTransfer } from '../../pub/tool/TransferTool';
import { initLang, getLangByResId } from '../../../../scmpub/scmpub/pub/tool/multiLangUtil';
import { buttonControl } from './viewController/buttonController';
import { createListTitle } from '../../../../scmpub/scmpub/pub/tool/titleUtil';
const { NCToggleViewBtn, NCAffix, NCDiv } = base;
import './index.less';
const { BillTrack } = high;
class List extends Component {
constructor(props) {
super(props);
//显示的tab页
this.tabType = BILLTYPE.saleorder;
props.use.search(AREA.saleorderSearchArea);
this.state = {
msgContent: '',
ntotalnum: 0,
// 单据追溯使用
showBillTrack: false,
billid: null,
// 存量查拣
onhandShow: false,
headRows: { rows: [] }
};
}
componentWillMount() {
initLang(this, [ '4006directarrange' ], 'so', initTemplate.bind(this, this.props));
//转单单页改多页完成上下游交互
broadcast.on(FIELD.broadcastKey, (obj, key) => {
// 注意 这个条件一定要有 这个事件触发是很频繁的 所有的非本页签ajax都会触发 没有条件或许会导致多次刷新
if (key == FIELD.broadcastKey) {
this.props.transferTable.setSavedTransferTableDataPk(obj.srcbids);
this.props.transferTable.refreshTransferTable('single');
buttonControl.call(this);
}
});
}
componentWillUnmount() {
//注销属性
broadcast.off('directarrange');
}
componentDidMount() {
this.queryById();
}
queryById = () => {
let tabType = this.props.getUrlParam('type');
if (tabType == null || tabType == '') {
return;
}
let directArrangeSrcIds = cacheTools.get(FIELD.queryIdInfo);
// 如果ids为空直接return不再走后台查询
if(directArrangeSrcIds == null || directArrangeSrcIds == undefined){
return;
}
let data = {
ids: directArrangeSrcIds,
type: tabType
};
cacheTools.set(FIELD.queryIdInfo, null);
setDefData(AREA.dataSource, FIELD.queryIdInfo, data);
this.queryByIds(data, tabType);
};
queryByIds = (data, tabType) => {
ajax({
url: URL.queryById,
data: data,
success: (res) => {
let { success, data } = res;
if (success) {
if (data) {
if (tabType == BILLTYPE.saleorder) {
this.props.transferTable.setTransferTableValue(
AREA.saleorderHeadTableArea,
AREA.saleorderBodyTableArea,
data,
PK.saleorderHeadPK,
PK.saleorderBodyPK
);
}
}
buttonControl.call(this);
}
}
});
};
// 计算合计
calTotal = (flag, record, bodys, index, numkey) => {
let ntotalnum = calTotalForTransfer.call(
this,
flag,
record,
bodys,
index,
[ numkey ],
[ this.state.ntotalnum ]
);
this.setState({
ntotalnum: ntotalnum[0]
});
};
// 存量查拣按钮点击事件
onHandBtnClick = () => {
let selectData = this.props.transferTable.getTransferTableSelectedValue(AREA.dataSource, true);
let ids = [];
for (let head of selectData[AREA.saleorderHeadTableArea]) {
if (head.body[AREA.saleorderBodyTableArea]) {
if (head.body[AREA.saleorderBodyTableArea].rows) {
for (let row of head.body[AREA.saleorderBodyTableArea].rows) {
ids.push(row.values[PK.saleorderBodyPK].value);
}
}
}
}
let data = {
ids: ids
};
ajax({
url: URL.onhandQuery,
data: data,
success: (res) => {
if (!res.success) {
return;
}
this.setState({
headRows: res.data.head
});
this.toggleOnhandShow.call(this);
}
});
};
// 控制存量查拣的显示隐藏
toggleOnhandShow = () => {
this.setState({ onhandShow: !this.state.onhandShow });
};
// react界面渲染函数
render() {
const { transferTable, search, modal, socket } = this.props;
const { NCCreateSearch } = search;
const { createTransferTable } = transferTable;
const { createModal } = modal;
let totalstr = `${getLangByResId(this, '4006DIRECTARRANGE-000010')}${this.state.ntotalnum} `; /* 国际化处理: 总数量*/
return (
<div id="transferList" className="nc-bill-list">
{socket.connectMesg({
tableAreaCode: AREA.saleorderHeadTableArea,
billpkname: 'csaleorderid',
tableType: 'transferTable', // 表格类型 默认 simpleTable 可选 editTable insertTable transferTable cardTable
billtype: BILLTYPE.saleorder //用于查询追溯
})}
<NCAffix>
<NCDiv areaCode={NCDiv.config.HEADER} className="nc-bill-header-area">
<div className="header-title-search-area">{createListTitle(this)}</div>
<div className="header-button-area">
{this.props.button.createButtonApp({
area: BUTTON.list_head,
buttonLimit: 4,
onButtonClick: onList_BtnClicks.bind(this),
popContainer: document.querySelector('.header-button-area')
})}
<NCToggleViewBtn
onClick={() => {
if (!this.props.meta.getMeta()[AREA.saleorderViewTableArea]) {
initTemplate.call(this, this.props); //加载主子拉平模板
}
this.props.transferTable.changeViewType();
}}
/>
</div>
</NCDiv>
</NCAffix>
<div className="nc-bill-search-area">
{NCCreateSearch(
AREA.saleorderSearchArea,
{
onAfterEvent: search_afterEvent.bind(this),
clickSearchBtn: serach_btnClick.bind(this),
renderCompleteEvent: renderCompleteEvent.bind(
this,
AREA.saleorderSearchArea,
FIELD.pk_org,
search_afterEvent
),
statusChangeEvent: renderCompleteEvent.bind(
this,
AREA.saleorderSearchArea,
FIELD.pk_org,
search_afterEvent
)
}
//模块id
)}
</div>
<div className="nc-bill-transferTable-area">
{createTransferTable({
dataSource: AREA.dataSource,
headTableId: AREA.saleorderHeadTableArea, //表格组件id
bodyTableId: AREA.saleorderBodyTableArea, //子表模板id
fullTableId: AREA.saleorderViewTableArea,
showChildIndex: false,
containerSelector: '#transferList',
totalKey: [ 'nnum' ],
totalTitle: [ getLangByResId(this, '4006DIRECTARRANGE-000010') ],
onCheckedChange: () => {
buttonControl.call(this);
},
onClearAll: () => {
buttonControl.call(this);
},
showSeletedBtn: false,
showGenerateBtn: false
})}
</div>
<div>
{createModal('MessageDlg', {
width: '560px',
height: '256px',
className: 'senior',
content: this.state.msgContent
})}
</div>
<BillTrack
show={this.state.showBillTrack}
close={() => {
this.setState({ showBillTrack: false });
}}
pk={this.state.billid} //单据id
type={BILLTYPE.saleorder} //单据类型
/>
<ExtendRefer
headRows={this.state.headRows}
showBatch={false}
appcode={'400600400'}
headTemplateCode={'400600400_onhandhead'}
bodyTemplateCode={'400600400_onhandbody'}
undealNumCode={'onhandshouldnum'}
thisNumCode={'onhandcurrentnum'}
editable={false}
show={this.state.onhandShow}
toggleShow={this.toggleOnhandShow}
/>
</div>
);
}
}
List = createPage({})(List);
export default List;
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,13 @@
.header-button-area {
.refer-wrapper.clearfix {
width: auto;
}
}
.select-org {
display: flex;
align-items: center;
padding: 30px 70px;
.main-org {
margin-left: 16px;
}
}

View File

@ -0,0 +1,5 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import initTemplate from './initTemplate';
export { initTemplate };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,175 @@
/*pmFWCFu5nhKkBzYmrkBakcvc7vnebKnx+SIL9oZI+GI=*/
/*
* @Author: 刘奇
* @PageInfo: 初始化销售订单模板
* @Date: 2018-06-21 13:45:20
* @Last Modified by: wangpju
* @Last Modified time: 2021-05-06 10:13:33
*/
import { AREA, FIELD, PK, BILLTYPE } from '../../constance';
import { setRefShowDisabledData, setPsndocShowLeavePower } from '../../../../../scmpub/scmpub/pub/tool/refUtils';
import { buttonControl } from '../viewController/buttonController';
import { getSearchValByField } from '../../../pub/tool/SearchTool';
import { transferSkipToSrcBillUtil } from '../../../../../scmpub/scmpub/pub/tool/transferSkipToSrcBillUtil';
export default function (props) {
props.createUIDom(
{
pagecode: AREA.saleorderPageArea, //页面编码
appcode: AREA.appcode
},
(data) => {
if (data) {
if (data.template) {
let meta = data.template;
modifierMeta.call(this, props, meta);
props.meta.setMeta(meta, buttonControl.call(this));
}
if (data.button) {
let button = data.button;
props.button.setButtons(button);
}
}
}
);
}
function modifierMeta(props, meta) {
let billcodeData = {
// billcodefield: FIELD.vbillcode,
pkfield: PK.saleorderHeadPK,
billtype: BILLTYPE.saleorder
};
meta[AREA.saleorderHeadTableArea].items.map((item, key) => {
transferSkipToSrcBillUtil.call(this, props, item, billcodeData);
});
meta[AREA.saleorderViewTableArea].items.map((item, key) => {
transferSkipToSrcBillUtil.call(this, props, item, billcodeData);
});
meta[AREA.saleorderSearchArea].items.map((item) => {
//所有参照都增加启用停用按钮
setRefShowDisabledData(item);
//过滤交易类型
if (item.attrcode === FIELD.ctrantypeid) {
item.queryCondition = () => {
return {
parentbilltype: '30'
};
};
} else if (item.attrcode == FIELD.pk_org) {
//主组织
item.queryCondition = () => {
return { TreeRefActionExt: 'nccloud.web.scmpub.ref.AppPermissionOrgRefFilter' };
};
item.isRunWithChildren = false;
} else if (item.attrcode == FIELD.cmaterialid) {
//物料
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
item.isShowUnit = true;
} else if (item.attrcode == FIELD.pk_marbasclass) {
//物料基本分类
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
item.isShowUnit = true;
} else if (item.attrcode == FIELD.pk_marsaleclass) {
//物料销售分类
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
item.isShowUnit = true;
} else if (item.attrcode == FIELD.ccustomerid) {
//客户
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
item.isShowUnit = true;
} else if (item.attrcode == FIELD.pk_custclass) {
//客户基本分类
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
} else if (item.attrcode == FIELD.pk_custsaleclass) {
//客户销售分类
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
} else if (item.attrcode == FIELD.chreceivecustid) {
//收货客户
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
item.isShowUnit = true;
} else if (item.attrcode == FIELD.pk_areacl) {
//地区分类
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
} else if (item.attrcode == FIELD.csendstordocid) {
//仓库
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.csendstockorgid);
return { pk_org: data }; // 根据库存组织过滤
};
} else if (item.attrcode == FIELD.cemployeeid) {
//业务员
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.csendstockorgid);
return { pk_org: data, busifuncode: 'sa' }; // 根据库存组织过滤
};
// 显示离职人员
setPsndocShowLeavePower(item);
item.isShowUnit = true;
} else if (item.attrcode == FIELD.cdeptid) {
//部门
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.csendstockorgid);
return { pk_org: data, busifuncode: 'sa' }; // 根据库存组织过滤
};
item.isRunWithChildren = false;
item.isShowUnit = true;
} else if (item.attrcode == FIELD.csendstockorgid) {
item.queryCondition = () => {
return { GridRefActionExt: 'nccloud.web.scmpub.ref.AppPermissionOrgRefFilter' };
};
item.isRunWithChildren = false;
} else if (
item.attrcode.indexOf('vdef') > 0 ||
item.attrcode.indexOf('so_saleorder_b.vfree') > 0 ||
item.attrcode.indexOf('so_saleorder_b.vbdef') > 0
) {
//自定义项、自由辅助属性按照组织过滤
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, AREA.saleorderSearchArea, FIELD.pk_org);
return { pk_org: data }; // 根据pk_org过滤
};
}
});
addColumnOpr(props, meta)
return meta;
}
function addColumnOpr(props, meta) {
let porCol = {
render(text, record, index) {
return props.button.createErrorButton({
record: record
})
}
};
meta[AREA.saleorderHeadTableArea].items.push(porCol);
return meta
}
/*pmFWCFu5nhKkBzYmrkBakcvc7vnebKnx+SIL9oZI+GI=*/

View File

@ -0,0 +1,62 @@
/*kmMeNHXPpdljPj98yiqeQYydiTbXG7HYDAOzxFCFCYY=*/
/*
* @Author: 刘奇
* @PageInfo:界面状态-按钮控制
* @Date: 2018-12-25 15:40:52
* @Last Modified by: 刘奇
* @Last Modified time: 2019-01-17 15:13:30
*/
import { AREA, BUTTON, FIELD } from '../../constance';
import { getDefData } from '../../../../../scmpub/scmpub/pub/cache';
function buttonControl() {
// 1、设置页面状态
setUIState.call(this);
// 2、按钮状态控制
setButtonState.call(this);
// 3、主按钮设置
setMainButton.call(this);
// 4、返回按钮控件状态控制
setHeadInfoState.call(this);
// 5、卡片分页器状态控制
setCardPaginationState.call(this);
}
function setUIState() {}
function setButtonState() {
this.props.button.setDisabled({
[BUTTON.refresh]: true
});
let data = this.props.transferTable.getTransferTableSelectedValue(AREA.dataSource);
let flag = true;
if (data[AREA.saleorderHeadTableArea]) {
flag = data[AREA.saleorderHeadTableArea].length > 0 ? false : true;
}
this.props.button.setDisabled({
[BUTTON.queryAboutBusiness]: flag,
[BUTTON.saleOrderTO5A]: flag,
[BUTTON.saleOrderTO5X]: flag,
[BUTTON.saleOrderTO20]: flag,
[BUTTON.saleOrderTO21]: flag,
[BUTTON.onhandQuery]: flag
});
if (getDefData(AREA.dataSource, FIELD.queryIdInfo) || getDefData(AREA.dataSource, FIELD.querySchemeInfo)) {
this.props.button.setDisabled({
[BUTTON.refresh]: false
});
} else {
this.props.button.setDisabled({
[BUTTON.refresh]: true
});
}
}
function setMainButton() {}
function setHeadInfoState() {}
function setCardPaginationState() {}
export { buttonControl };
/*kmMeNHXPpdljPj98yiqeQYydiTbXG7HYDAOzxFCFCYY=*/

View File

@ -0,0 +1,10 @@
{
"dependModuleName": [
"scmpub/scmpub/components/MainOrgRef",
"ic/ic/components/onhandRefer"
],
"dependjs": [
"../../../../scmpub/scmpub/components/MainOrgRef/index.js",
"../../../../ic/ic/components/onhandRefer/index.js"
]
}

View File

@ -0,0 +1,10 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import {RenderRouter} from 'nc-lightapp-front';
import routes from './router';
(function main(routers,htmlTagid){
RenderRouter(routers,htmlTagid);
})(routes,"app");
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,48 @@
/*gqz+qtUAzY1h2BMS2WtqJQ==*/
import { asyncComponent } from 'nc-lightapp-front';
import List from '../list';
// const buyingreq = asyncComponent(() =>
// import(/* webpackChunkName: "pu/pu/buyingreq/card/card1" */ /* webpackMode: "eager" */ '../../../../pu/pu/buyingreq/card')
// );
// const m5a = asyncComponent(() =>
// import(/* webpackChunkName: "to/to/m5a/card/card2" */ /* webpackMode: "eager" */ '../../../../to/to/m5a/card')
// );
// const poorder = asyncComponent(() =>
// import(/* webpackChunkName: "pu/pu/poorder/card/card3" */ /* webpackMode: "eager" */ '../../../../pu/pu/poorder/card')
// );
// const m5xmaintain = asyncComponent(() =>
// import(/* webpackChunkName: "to/to/m5xmaintain/card/card4" */ /* webpackMode: "eager" */ '../../../../to/to/m5xmaintain/card')
// );
const routes = [
{
path: '/',
component: List,
exact: true
},
{
path: '/list',
component: List
}
// ,
// {
// path: '/buyingreq',
// component: buyingreq
// },
// {
// path: '/m5a',
// component: m5a
// },
// {
// path: '/poorder',
// component: poorder
// },
// {
// path: '/m5xmaintain',
// component: m5xmaintain
// }
];
export default routes;
/*gqz+qtUAzY1h2BMS2WtqJQ==*/

View File

@ -0,0 +1,44 @@
/*IGzbrQ6E+geanNSkta9fbTIiebkpHcYY5/0zqgWXSZE=*/
/*
* @Author: wangceb
* @PageInfo: 销售管理批次号参照编辑前事件
* @Date: 2018-08-15 20:44:14
* @Last Modified by: liangzhyf
* @Last Modified time: 2021-03-02 15:51:20
*/
import { ajax, base } from 'nc-lightapp-front';
function SObatchcodeBeforeEdit(index, pk_org, cmaterialvid, data) {
if (pk_org && cmaterialvid) {
// 查询物料是否批次管理
return new Promise(function(resolve, reject) {
let querydata = {
data_key: data,
pk_org: pk_org,
cmaterialvid: cmaterialvid,
index: index
};
ajax({
url: '/nccloud/so/pub/batchcodebefore.do',
data: querydata,
success: res => {
if (res.data) {
let isedit = res.data;
if (isedit === false) {
resolve(false);
}
resolve(res.data);
} else {
resolve(false);
}
}
});
});
}
return false;
}
export { SObatchcodeBeforeEdit };
/*IGzbrQ6E+geanNSkta9fbTIiebkpHcYY5/0zqgWXSZE=*/

View File

@ -0,0 +1,30 @@
/*11clYOLdEiy4eMwuItHv+04mARsYzhU2wuhooa92RoA=*/
/*
* @Author: wangceb
* @PageInfo: 页面功能描述
* @Date: 2018-11-06 16:57:51
* @Last Modified by: wangceb
* @Last Modified time: 2018-11-06 17:03:09
*/
import { ajax } from 'nc-lightapp-front';
import { setDefData, getDefData } from '../../../../scmpub/scmpub/pub/cache';
export function refBillQueryCache(refBillQueryData, dataSource, cacheKey) {
let cache = getDefData(dataSource, cacheKey);
if (cache) {
return;
}
ajax({
url: '/nccloud/so/pub/retAddInfo.do',
data: refBillQueryData,
success: (res) => {
if (res.success) {
if (res.data) {
setDefData(dataSource, cacheKey, res.data);
}
}
}
});
}
/*11clYOLdEiy4eMwuItHv+04mARsYzhU2wuhooa92RoA=*/

View File

@ -0,0 +1,40 @@
/*TmsLFMYUeJL720Nh4y/WUD8sLe8zLJNWgl+WdKFFqiM=*/
/**
* 主组织主动触发编辑后事件
* @param {*} props
* @param {*} areacode 区域编码
* @param {*} key 触发字段默认为pk_org
* @param {*} value 触发的value {value:,display:}
* @param {*} afterEvent 自己的编辑后事件
*/
function mainOrgEdit(props, areacode, key = 'pk_org', value, afterEvent) {
editForm(props, areacode, key, value, afterEvent);
}
/**
* 编辑form表单
* @param {*} props
* @param {*} areacode
* @param {*} key
* @param {*} value
* @param {*} afterEvent
*/
function editForm(props, areacode, key, value, afterEvent) {
edit(props, 'form', areacode, key, value, null, null, afterEvent);
}
function edit(props, type, areacode, key, value, changedrows, index, afterEvent) {
props.handleRelationItems({
type: type, //编辑的是表单值为'form', 编辑的是表格值为'table'
areaCode: areacode, //编辑区域的编码
key: key, //编辑字段英文名称
value: value, //编辑字段的新值
changedrows: changedrows, // 若编辑的是表格,需要传该参数(编辑字段的旧值),表单不传
index: index, //当前是第几行 从 0 开始,编辑表格时,需要传该参数,表单不传
callback: afterEvent //请求成功的回调(业务组自己的编辑后事件)
});
}
export { mainOrgEdit, editForm };
/*TmsLFMYUeJL720Nh4y/WUD8sLe8zLJNWgl+WdKFFqiM=*/

View File

@ -0,0 +1,49 @@
/*
* @Author: zhangjyp
* @PageInfo: 计算表头合计
* @Date: 2018-12-13 13:50:36
* @Last Modified by: zhangjyp
* @Last Modified time: 2018-12-13 13:54:15
*/
import { sum } from 'nc-lightapp-front';
import TrimZeroUtil from '../tool/TrimZeroUtil'
export default function calHeadTotal(props, pageId, formId, tableId, keymaps) {
let CardData = props.createMasterChildData(pageId, formId, tableId);
let rows = CardData.body[tableId].rows;
let bodyKeyData = new Map();
for (let bodyKey of keymaps.keys()) {
let arrs = [];
for (let row of rows) {
//删行的不参与计算
if (row.status === '3') {
continue;
}
let value = Number(0);
if (row.values[bodyKey]) {
value = Number(row.values[bodyKey].value);
}
let blargessflag = row.values.blargessflag.value;
// 赠品行不参与计算价税合计和费用冲抵金额
if (blargessflag && (bodyKey === 'norigtaxmny' || bodyKey === 'norigsubmny')) {
continue;
}
arrs.push(value);
}
bodyKeyData.set(bodyKey, arrs);
}
let bodysum = new Map();
for (let [ bodyKey, bodydata ] of bodyKeyData) {
let ntotalvalue = 0;
ntotalvalue = sum(ntotalvalue, ...bodydata);
bodysum.set(bodyKey, ntotalvalue);
}
for (let [ bodyKey, headKey ] of keymaps) {
let value=bodysum.get(bodyKey);
let scale=TrimZeroUtil(value);
props.form.setFormItemsValue(formId, {
[headKey]: { value:value ,scale:scale }
});
}
}

View File

@ -0,0 +1,43 @@
/*rJyT6t0/hN/nPeLTCKsosG8bXS+pKR6mqrO0qUy6c0U=*/
/*
* @Author: wangceb
* @PageInfo: 判断是否固定换算率
* @Date: 2018-08-29 11:13:13
* @Last Modified by: wangceb
* @Last Modified time: 2018-08-29 14:57:03
*/
import { ajax, toast } from 'nc-lightapp-front';
export default function(props, constance) {
return new Promise(function(resolve, reject) {
let { cmaterialvid, cunitid, castunitid } = constance;
let data = {
key: 'so_vchangerate',
params: {
cmaterialvid: cmaterialvid,
cunitid: cunitid,
castunitid: castunitid
}
};
ajax({
url: '/nccloud/so/pub/bodybefore.do',
data: data,
success: (res) => {
if (res.data) {
let isFixed = res.data.isedit;
resolve(!isFixed);
}
},
error: (error) => {
toast({
color: 'warning',
content: error.message
});
resolve(false);
}
});
});
}
/*rJyT6t0/hN/nPeLTCKsosG8bXS+pKR6mqrO0qUy6c0U=*/

View File

@ -0,0 +1,49 @@
/**
* 编辑前处理需要物料
* 这类方法必须有返回值返回true为可编辑false为不可编辑
*/
import { ajax } from 'nc-lightapp-front';
export default function(props, constance) {
return new Promise(function(resolve, reject) {
let { key, formareaid, pk_org_key, billtype } = constance;
let pk_org = props.form.getFormItemsValue(formareaid, pk_org_key);
if (!pk_org || !pk_org.value) {
resolve(false);
} else {
let data = {
key: key,
params: {
pk_org: pk_org.value,
billtype: billtype
}
};
ajax({
url: '/nccloud/so/pub/headbefore.do',
data: data,
success: (res) => {
if (res.data) {
let isedit = res.data.isedit;
if (isedit) {
resolve(isedit);
} else if (res.data.message) {
toast({
color: 'warning',
content: res.data.message
});
}
resolve(false);
}
},
error: (error) => {
toast({
color: 'warning',
content: error.message
});
resolve(false);
}
});
}
});
}

View File

@ -0,0 +1,55 @@
/**
* 物料自由辅助属性编辑前处理需要物料的固定辅助属性库存状态启用
* 这类方法必须有返回值返回true为可编辑false为不可编辑
*/
import { ajax } from 'nc-lightapp-front';
export default function(props, constance) {
return new Promise(function(resolve, reject) {
let { key, areahid, areabid, index, cmaterialid } = constance;
//组织为空,不可编辑
let pk_org = props.form.getFormItemsValue(areahid, 'pk_org');
if (!pk_org) {
resolve(false);
}
//物料为空,不可编辑
let cmaterialvid = props.cardTable.getValByKeyAndIndex(areabid, index, cmaterialid);
if (!cmaterialvid || !cmaterialvid.value) {
resolve(false);
} else {
let data = {
key: key,
params: {
cmaterialvid: cmaterialvid.value,
pk_org: pk_org.value,
key: key
}
};
ajax({
url: '/nccloud/so/pub/bodybefore.do',
data: data,
success: (res) => {
if (res.data) {
let isedit = res.data.isedit;
if (isedit) {
resolve(isedit);
} else if (res.data.message) {
toast({
color: 'warning',
content: res.data.message
});
}
resolve(false);
}
},
error: (error) => {
toast({
color: 'warning',
content: error.message
});
resolve(false);
}
});
}
});
}

View File

@ -0,0 +1,29 @@
/*
* @Author: wangceb
* @PageInfo: 页面功能描述
* @Date: 2018-08-13 16:54:23
* @Last Modified by: cuijun
* @Last Modified time: 2020-03-10 20:11:04
*/
import { transtypeUtils } from '../../../../scmpub/scmpub/pub/tool';
function renderCompleteEvent(moduleId, orgfield, callback, ctrantypeid) {
// 设置默认值
transtypeUtils.setQueryDefaultValue.call(this, this.props, moduleId, ctrantypeid);
let pk_org_value = this.props.search.getSearchValByField(moduleId, orgfield);
let arr = null;
if (pk_org_value && pk_org_value.value && pk_org_value.value.firstvalue) {
let value = pk_org_value.value.firstvalue;
arr = value.split(',').map((item) => {
return {
refpk: item
};
});
}
if (callback) {
callback.call(this, orgfield, arr);
}
}
export { renderCompleteEvent };

View File

@ -0,0 +1,20 @@
/*
* @Author: wangceb
* @PageInfo: 查询区常用工具
* @Date: 2018-07-22 09:40:38
* @Last Modified by: wangceb
* @Last Modified time: 2018-08-20 21:01:32
*/
//获取查询区某个字段的值
function getSearchValByField(props, searchId, field) {
let searchVal = props.search.getSearchValByField(searchId, field); // 获取过滤源选择的参数
let fieldvalue = searchVal && searchVal.value && searchVal.value.firstvalue ? searchVal.value.firstvalue : ''; // 选择的参数
if (fieldvalue.indexOf(',') != -1) {
return null;
} else {
return fieldvalue;
}
}
export { getSearchValByField };

View File

@ -0,0 +1,63 @@
/*
* @Author: wangceb
* @PageInfo: 转单界面工具类
* @Date: 2018-09-03 14:50:46
* @Last Modified by: zhangjyp
* @Last Modified time: 2018-09-26 13:41:06
*/
import { formatAcuracy } from 'nc-lightapp-front';
import { sum } from 'nc-lightapp-front';
/**
* // 计算转单扩展区域的合计
* @param {是否选中} flag
* @param {选中的表体时表体行的数据} record
* @param {选中的表头时表体行的数据} bodys
* @param {要合计的字段key} keys
* @param {当前界面的合计结果} totalvalues
*/
export function calTotalForTransfer(flag, record, bodys, index, keys, totalvalues) {
for (let i = 0; i < keys.length; i++) {
let ntotalvalue = 0,
arr = [];
// 如果是全选,合计值清零,重新计算
if (index != undefined && index === 'all') {
ntotalvalue = 0;
} else {
ntotalvalue = totalvalues[i];
}
let scale = 0;
let rowdata = null;
if (bodys && bodys.length > 0) {
rowdata = bodys;
} else {
rowdata = [ record ];
}
for (let line of rowdata) {
if (flag === true) {
arr.push(line[keys[i]].value);
// ntotalvalue = sum(ntotalvalue, line[keys[i]].value);
} else {
arr.push(-line[keys[i]].value);
// ntotalvalue = sum(ntotalvalue, -line[keys[i]].value);
}
}
ntotalvalue = sum(ntotalvalue, ...arr);
totalvalues[i] = Number(ntotalvalue) === 0 ? 0 : ntotalvalue;
}
return totalvalues;
}
function formatNumber(value) {
let ret = 0;
if (value) {
value = String(value).replace(/,/g, '');
ret = Number(value);
} else {
ret = Number(0);
}
if (Number.isNaN(ret)) {
ret = Number(0);
}
return ret;
}

View File

@ -0,0 +1,17 @@
/*
* @Author: zhangjyp
* @PageInfo: 数值取精度例如2.3精度是1
* @Date: 2018-12-13 09:50:36
* @Last Modified by: zhangjyp
* @Last Modified time: 2018-12-13 09:50:36
*/
export default function trimZero(data) {
let start = data.indexOf('.');
let length = data.length;
if (start === -1) {
return 0;
}
return length - 1 - start;
}

View File

@ -0,0 +1,40 @@
/*
* @Author: sunxxf
* @PageInfo: 收回数据组装
* @Date: 2020-11-12 16:43:26
* @Last Modified by: sunxxf
* @Last Modified time: 2020-11-13 09:32:30
*/
/**
* 获取卡片页表头表体pk-ts关系
* @param {*} props
* @param {*} params
*/
function getPkTsDataIncludeBodyInCard(props, params) {
let headCode = params.headCode; // 表头区域编码
let bodyCode = params.bodyCode; // 表体区域编码
let hidField = params.hidField; // 表头主键名称
let bidField = params.bidField; // 表体主键名称
let tsField = 'ts';
// 组件子表数据
let allRows = props.cardTable.getAllRows(bodyCode);
let bodys = [];
allRows.forEach((row) => {
bodys.push({
pk: row.values[bidField].value,
ts: row.values[tsField].value
});
});
let data = {
pk: props.form.getFormItemsValue(headCode, hidField).value,
ts: props.form.getFormItemsValue(headCode, tsField).value,
bodys: bodys
};
return data;
}
export { getPkTsDataIncludeBodyInCard };

View File

@ -0,0 +1,133 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
/*
* @Author: 刘奇
* @PageInfo: 常量类
* @Date: 2018-05-22 19:25:02
* @Last Modified by: 刘奇
* @Last Modified time: 2019-08-09 14:19:21
*/
// 区域ID
const AREA = {
//销售订单列表界面区域
saleorderPageArea: '400600400_replenishment',
saleorderViewTableArea: 'saleorderview',
saleorderHeadTableArea: 'saleorderhead',
saleorderBodyTableArea: 'so_saleorder_b',
saleorderSearchArea: 'saleorderSearch',
saleorderAppid: '0001Z81000000005GAEG',
saleorderAppcode: '400600400',
//调拨订单列表界面区域
tobillPageArea: '400900800_replenishment',
tobillPageViewArea: '400900800_replenishmentview',
tobillViewTableArea: 'view5x',
tobillHeadTableArea: 'head',
tobillBodyTableArea: 'body',
tobillSearchArea: 'search',
tobillOid: '1002Z81000000000111F',
tobillAppcode: '400900800',
tobillAppid: '0001Z81000000003DFYH',
dataSource: 'scm.so.replenishmentarrange.main',
replenishmentarrangeAppcode: '400600808'
};
const PK = {
saleorderHeadPK: 'csaleorderid',
saleorderBodyPK: 'csaleorderbid',
tobillHeadPK: 'cbillid',
tobillBodyPK: 'cbill_bid'
};
//页面状态
const STATUS = {
browse: 'browse',
edit: 'edit'
};
//按钮名称以及区域
const BUTTON = {
list_head: 'list_head', //列表表头区域
list_inner: 'list_inner', //列表行操作区域
card_head: 'card_head', //卡片表头区域
card_body: 'card_body', //卡片表体肩区域
card_body_inner: 'card_body_inner', //卡片表体行操作区域
add: 'Add', //新增
delete: 'Delete', //删除
edit: 'Edit', //修改
save: 'Save', //保存
show: 'Show', //查看
cancel: 'Cancel', //取消
copy: 'Copy', //复制
commit: 'Commit', //提交
unCommit: 'UnCommit', //取消提交
deleteLine: 'DeleteLine', //删行|移除
addLine: 'AddLine', //增行
refresh: 'Refresh', //刷新
replenishmentArrange: 'ReplenishmentArrange', //补货安排
queryAboutBusiness: 'QueryAboutBusiness', //单据追溯
saleOrderTO20: '30TO20', //请购单
saleOrderTO21: '30TO21', //采购订单
saleOrderTO5A: '30TO5A', //调入申请
saleOrderTO5X: '30TO5X', //调拨订单
saleOrderTO61: '30TO61', //委外订单
saleOrderTOA2: '30TOA2', //生产订单
onhandQuery: 'OnhandQuery', //存量查拣
billReturn: 'BillReturn' //退出转单
};
//请求URL地址
const URL = {
list_url: '/so/so/replenishmentarrange/list/index.html',
querySaleorder: '/nccloud/so/replenishmentarrange/querysaleorder.do',
queryTobill: '/nccloud/so/replenishmentarrange/querytobill.do',
queryById: '/nccloud/so/replenishmentarrange/querybyid.do',
checkBill: '/nccloud/so/replenishmentarrange/checkbill.do', //检查选中单据是否可以进行推单
onhandQuery: '/nccloud/so/replenishmentarrange/onhandquery.do', //存量查检
praybillCard: '400400400_card', //请购单
transferinCard: '400900400_card', //调入申请
poorderCard: '400400800_card', //采购订单
scorderCard: '401200000_card', //委外订单
transferorderCard: '400900800_card', //调拨订单
pmoCard: '50080000_card', //生产订单,
dmoCard: '50090000_card' //离散生产订单
};
const BILLTYPE = {
saleorder: '30',
tobill: '5X',
transferin: '5A',
praybill: '20',
poorder: '21',
mmpac: '55A2', //生产订单
scorder: '61'
};
// 参数
const FIELD = {
queryIdInfoBySale: 'saleOrderQueryInfo', //缓存-查询条件对应的key-销售订单根据ID
querySchemeInfoBySale: 'saleOrderSrcIds', //缓存-查询条件对应的key-销售订单根据查询条件
queryIdInfoByBill: 'toBillQueryInfo', //缓存-查询条件对应的key-调拨订单根据ID
querySchemeInfoByBill: 'toBillSrcIds', //缓存-查询条件对应的key-调拨订单根据查询条件
broadcastKey: 'replenishmentarrange', //浏览器页签间数据传输的key
pk_org: 'pk_org', // 销售组织
cmaterialid: 'so_saleorder_b.cmaterialid', //物料
pk_marbasclass: 'so_saleorder_b.cmaterialid.pk_marbasclass', //物料基本分类
pk_marsaleclass: 'so_saleorder_b.cmaterialvid.materialsale.pk_marsaleclass', //物料销售分类
ccustomerid: 'ccustomerid', //客户
pk_custclass: 'ccustomerid.pk_custclass', //客户基本分类
pk_custsaleclass: 'ccustomerid.sales.pk_custsaleclass', //客户销售分类
chreceivecustid: 'chreceivecustid', //收货客户
pk_areacl: 'ccustomerid.pk_areacl', //地区分类
cemployeeid: 'cemployeeid', //业务员
cdeptid: 'cdeptid', //部门
csendstockorgid: 'so_saleorder_b.csendstockorgid', //库存组织
csendstordocid: 'so_saleorder_b.csendstordocid', //发货仓库
ctrantypeid: 'ctrantypeid', //交易类型
vbillcode: 'vbillcode', //单据号
//调拨订单相关
ctoutstockorgid: 'ctoutstockorgid',
cinstockorgid: 'cinstockorgid',
cinventoryid: 'bodyfk.cinventoryid',
tobill_pk_marbasclass: 'bodyfk.cinventoryid.pk_marbasclass',
ctoutstordocid: 'bodyfk.ctoutstordocid',
cinstordocid: 'bodyfk.cinstordocid',
creceivecustid: 'bodyfk.creceivecustid'
};
export { AREA, STATUS, URL, BUTTON, PK, BILLTYPE, FIELD };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,8 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import search30_afterEvent from './search30_afterEvent';
import search5X_Filter from './search5X_Filter';
import search5X_afterEvent from './search5X_afterEvent';
export { search30_afterEvent, search5X_Filter, search5X_afterEvent };
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,81 @@
/*tFYO74QUmAFerBD8U0vG1KzZ8+FOYkv7oBjEPLoIhNw=*/
/*
* @Author: 刘奇
* @PageInfo: 查询区编辑后
* @Date: 2018-07-30 13:30:56
* @Last Modified by: 刘奇
* @Last Modified time: 2018-08-29 20:08:53
*/
import { AREA, FIELD } from '../../constance';
import MultiCorpRefHandler from '../../../../../scmpub/scmpub/pub/tool/MultiCorpRefHandler';
export default function(key, val) {
//物料相关、客户、收货客户、业务员、部门依赖于销售组织
if (key == FIELD.pk_org) {
MultiCorpRefHandler(this.props, val, AREA.saleorderSearchArea, [
FIELD.cmaterialid,
FIELD.pk_marbasclass,
FIELD.pk_marsaleclass,
FIELD.ccustomerid,
FIELD.chreceivecustid,
FIELD.cemployeeid,
FIELD.cdeptid,
'vdef1',
'vdef2',
'vdef3',
'vdef4',
'vdef5',
'vdef6',
'vdef7',
'vdef8',
'vdef9',
'vdef10',
'vdef11',
'vdef12',
'vdef13',
'vdef14',
'vdef15',
'vdef16',
'vdef17',
'vdef18',
'vdef19',
'vdef20',
'so_saleorder_b.vfree1',
'so_saleorder_b.vfree2',
'so_saleorder_b.vfree3',
'so_saleorder_b.vfree4',
'so_saleorder_b.vfree5',
'so_saleorder_b.vfree6',
'so_saleorder_b.vfree7',
'so_saleorder_b.vfree8',
'so_saleorder_b.vfree9',
'so_saleorder_b.vfree10',
'so_saleorder_b.vbdef1',
'so_saleorder_b.vbdef2',
'so_saleorder_b.vbdef3',
'so_saleorder_b.vbdef4',
'so_saleorder_b.vbdef5',
'so_saleorder_b.vbdef6',
'so_saleorder_b.vbdef7',
'so_saleorder_b.vbdef8',
'so_saleorder_b.vbdef9',
'so_saleorder_b.vbdef10',
'so_saleorder_b.vbdef11',
'so_saleorder_b.vbdef12',
'so_saleorder_b.vbdef13',
'so_saleorder_b.vbdef14',
'so_saleorder_b.vbdef15',
'so_saleorder_b.vbdef16',
'so_saleorder_b.vbdef17',
'so_saleorder_b.vbdef18',
'so_saleorder_b.vbdef19',
'so_saleorder_b.vbdef20'
]);
}
//仓库依赖于库存组织
if (key == FIELD.csendstockorgid) {
MultiCorpRefHandler(this.props, val, AREA.saleorderSearchArea, [ FIELD.csendstordocid ]);
}
}
/*tFYO74QUmAFerBD8U0vG1KzZ8+FOYkv7oBjEPLoIhNw=*/

View File

@ -0,0 +1,44 @@
/*QLsb8h6xvDNf4sw28a6K9oOXZbIRomS6I6TmWwXiuSY=*/
/*
* @Author: liuqip
* @PageInfo: 自制
* @Date: 2018-05-29 14:39:58
* @Last Modified by: 刘奇
* @Last Modified time: 2019-01-18 09:49:20
*/
import { getSearchValByField } from '../../../pub/tool/SearchTool';
export default function(props, meta, moduleId) {
meta[moduleId].items.map((item) => {
//过滤交易类型
if (item.attrcode === 'ctrantypeid') {
item.queryCondition = () => {
return {
parentbilltype: '5X'
};
};
} else if (
item.attrcode === 'bodyfk.cinventoryid' ||
item.attrcode === 'bodyfk.cinventoryid.pk_marbasclass' ||
item.attrcode === 'bodyfk.ctoutstordocid'
) {
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, moduleId, 'ctoutstockorgid');
return { pk_org: data };
};
} else if (item.attrcode === 'bodyfk.cinstordocid' || item.attrcode === 'bodyfk.creceivecustid') {
item.queryCondition = () => {
let data = getSearchValByField.call(this, props, moduleId, 'cinstockorgid');
return { pk_org: data, busifuncode: 'st' };
};
} else if (
item.attrcode.indexOf('vdef') > 0 ||
item.attrcode.indexOf('vfree') > 0 ||
item.attrcode.indexOf('vbdef') > 0
) {
item.isShowUnit = true;
}
});
}
/*QLsb8h6xvDNf4sw28a6K9oOXZbIRomS6I6TmWwXiuSY=*/

View File

@ -0,0 +1,25 @@
/*IAMM/VNvWCdCIEUm8SIXjfjbM06NX/O3CZgjwLWFR7o=*/
/*
* @Author: 刘奇
* @PageInfo: 查询区编辑后
* @Date: 2018-07-30 13:30:56
* @Last Modified by: 刘奇
* @Last Modified time: 2018-08-03 11:11:17
*/
import { AREA, FIELD } from '../../constance';
import MultiCorpRefHandler from '../../../../../scmpub/scmpub/pub/tool/MultiCorpRefHandler';
export default function(key, val) {
if (key == FIELD.ctoutstockorgid) {
MultiCorpRefHandler(this.props, val, AREA.tobillSearchArea, [
FIELD.cinventoryid,
FIELD.tobill_pk_marbasclass,
FIELD.ctoutstordocid
]);
}
if (key == FIELD.cinstockorgid) {
MultiCorpRefHandler(this.props, val, AREA.tobillSearchArea, [ FIELD.cinstordocid, FIELD.creceivecustid ]);
}
}
/*IAMM/VNvWCdCIEUm8SIXjfjbM06NX/O3CZgjwLWFR7o=*/

View File

@ -0,0 +1,18 @@
/*0rgV7lPDo7bFOrOG2xr6VQ==*/
import serachSaleorder_btnClick from './serachSaleorder_btnClick';
import serachTobill_btnClick from './serachTobill_btnClick';
import onList_BtnClicks from './onList_BtnClicks';
import selectOrg_BtnClick from './selectOrg_BtnClick';
import queryAboutBusiness_BtnClick from './queryAboutBusiness_BtnClick';
import onHand_BtnClick from './onHand_BtnClick';
export {
serachSaleorder_btnClick,
serachTobill_btnClick,
onList_BtnClicks,
selectOrg_BtnClick,
queryAboutBusiness_BtnClick,
onHand_BtnClick
};
/*0rgV7lPDo7bFOrOG2xr6VQ==*/

View File

@ -0,0 +1,154 @@
/*Kb+QI8zQOgr5rR3tGfON2iv4/r9iyw71JK2f3A4pGQ0=*/
/*
* @Author: 刘奇
* @PageInfo: 存量查检
* @Date: 2019-07-31 14:02:12
* @Last Modified by: 刘奇
* @Last Modified time: 2019-07-31 15:00:20
*/
import { ajax } from 'nc-lightapp-front';
import { AREA, PK, URL, BILLTYPE } from '../../constance';
export default function onHand_BtnClick(props) {
let selectData = this.props.transferTable.getTransferTableSelectedValue(AREA.dataSource, true);
let ids = [];
let data = {};
if (this.tabType == BILLTYPE.saleorder) {
for (let head of selectData[AREA.saleorderHeadTableArea]) {
if (head.body[AREA.saleorderBodyTableArea]) {
if (head.body[AREA.saleorderBodyTableArea].rows) {
for (let row of head.body[AREA.saleorderBodyTableArea].rows) {
ids.push(row.values[PK.saleorderBodyPK].value);
}
}
}
}
data.type = BILLTYPE.saleorder;
} else if (this.tabType == BILLTYPE.tobill) {
let onHandRows = gettobill.call(this, selectData);
this.setState({
headRows: onHandRows
});
this.toggleOnhandShowToBill.call(this);
return;
}
data.ids = ids;
ajax({
url: URL.onhandQuery,
data: data,
success: (res) => {
setTimeout(() => {
if (!res.success) {
return;
}
this.setState({
headRows: res.data.head
});
this.toggleOnhandShowSaleOrder.call(this);
}, 0);
}
});
}
function gettobill(data) {
const DIMFIELDS = [
'cmaterialoid.materialspec',
'cmaterialoid.materialtype',
'cmaterialoid.pk_measdoc',
'cunitid',
'pk_group',
'pk_org',
'cwarehouseid',
'cmaterialvid',
'cmaterialoid',
'castunitid',
'clocationid',
'pk_batchcode',
'vbatchcode',
'vchangerate',
'cvmivenderid',
'ctplcustomerid',
'cstateid',
'cvendorid',
'cprojectid',
'casscustid',
'cproductorid',
'cffileid',
'vfree1',
'vfree2',
'vfree3',
'vfree4',
'vfree5',
'vfree6',
'vfree7',
'vfree8',
'vfree9',
'vfree10'
];
let realRows = [];
data.head.forEach((bill) => {
let head = bill.head.head.rows[0];
let bodyRows = bill.body.body.rows;
if (head && DIMFIELDS) {
//过滤掉物料为空的行
bodyRows.forEach((bodyRow) => {
if (bodyRow && bodyRow.values && bodyRow.values.cinventoryvid && bodyRow.values.cinventoryvid.value) {
DIMFIELDS.forEach((dimItem) => {
// 库存组织
if (dimItem == 'pk_org') {
bodyRow.values[dimItem] = head.values.ctoutstockorgid;
} else if (dimItem == 'cwarehouseid') {
// 仓库
bodyRow.values[dimItem] = bodyRow.values.ctoutstordocid;
} else if (dimItem == 'cmaterialvid') {
// 物料ID
bodyRow.values[dimItem] = bodyRow.values.cinventoryvid;
} else if (dimItem == 'cmaterialoid') {
// 物料VID
bodyRow.values[dimItem] = bodyRow.values.cinventoryid;
} else if (dimItem == 'cmaterialoid.materialspec') {
// 规格
bodyRow.values[dimItem] = bodyRow.values['cinventoryvid.materialspec'];
} else if (dimItem == 'cmaterialoid.materialtype') {
// 型号
bodyRow.values[dimItem] = bodyRow.values['cinventoryvid.materialtype'];
} else if (dimItem == 'cmaterialoid.pk_measdoc') {
// 主单位
bodyRow.values[dimItem] = bodyRow.values.cunitid;
} else if (dimItem == 'clocationid') {
// 货位
bodyRow.values[dimItem] = bodyRow.values.ctoutspaceid;
} else if (dimItem == 'cvmivenderid') {
// 货位
bodyRow.values[dimItem] = bodyRow.values.cconsignvendorid;
}
//去除干扰的三个字段
if (bodyRow.values.hasOwnProperty('key')) {
delete bodyRow.values['key'];
}
if (bodyRow.values.hasOwnProperty('rowIndex')) {
delete bodyRow.values['rowIndex'];
}
if (bodyRow.values.hasOwnProperty('parentRowId')) {
delete bodyRow.values['parentRowId'];
}
if (bodyRow.values.hasOwnProperty('headKey')) {
delete bodyRow.values['headKey'];
}
});
realRows.push(bodyRow);
}
});
}
});
realRows.forEach((item) => {
item.values.onhandcurrentassnum = item.values.nastnum;
item.values.onhandcurrentnum = item.values.nnum;
});
return { rows: realRows };
}
/*Kb+QI8zQOgr5rR3tGfON2iv4/r9iyw71JK2f3A4pGQ0=*/

Some files were not shown because too many files have changed in this diff Show More