diff --git a/src/api/mdp/meta/item.js b/src/api/mdp/meta/item.js
index c4d64730..eea08e0b 100644
--- a/src/api/mdp/meta/item.js
+++ b/src/api/mdp/meta/item.js
@@ -2,17 +2,118 @@ import axios from '@/utils/request'
import config from '@/common/config'
-let base=config.getSysBasePath();
+let base = config.getSysBasePath();
+
/**
* 数据项定义
*1 默认只开放普通查询,所有查询,只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录【数如果是0后台会自动计算总记录数非0不会自动计算】},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉,
- *2 查询、新增、修改的参数格式 params={id:'主键 主键',itemCode:'代码',itemName:'名称',remark:'备注',categoryId:'分类编号',itemSize:'长度',itemType:'类型',branchId:'机构编号',deptid:'部门编号'}
+ *2 查询、新增、修改的参数格式 params={id:'主键 主键',itemCode:'代码,小写,下横线分割,请不要用驼峰命名',itemName:'名称',remark:'备注',categoryId:'分类编号',itemSize:'长度',itemType:'类型',branchId:'机构编号',deptid:'部门编号',cmenu:'是否创建菜单',values:'默认值,如果是列表,则存储列表编号,多个逗号分割',names:'默认名称,如果是列表,则存储列表名称,多个则逗号分割',options:'item_type=4,5时的选项列表[{value:值,name:显示名称}]',inputFormat:'输入提示',required:'是否必须0否1是',seq:'排序顺序',table:'表名',show:'是否显示0否1是',qx:'权限,是否可以0-新增,1-删除,2-编辑,3-查询,多个以逗号分割'}
**/
//普通查询 条件之间and关系
export const listItem = params => { return axios.get(`${base}/mdp/meta/item/list`, { params: params }); };
+export const getDicts = params => { return axios.get(`${base}/mdp/meta/item/dicts`, { params: params }); };
+
+/**下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex','grade']} 返回结果
+{
+ sex: [{id:'1',name:'男'},{id:'2',name:'女'}],
+ grade:[{id:'1',name:'等级1'},{id:'2',name:'等级2'}]
+}
+**/
+export const initSimpleDicts=function(categoryId,itemCodes){
+
+ if(!categoryId){
+ categoryId="all"
+ }
+ return new Promise((resolve, reject) => {
+ var keys=itemCodes
+ var localDicts={}
+ var nolocalDictsKeys=[];
+ var datetime=new Date().getTime();
+ var millSec=24*60*60*1000;//一天的毫秒数
+ keys.forEach(i=>{
+ var key=categoryId+"_@"+i;
+ var value= localStorage.getItem(key)
+ if(value!=null &&value.length>0){
+ var data=JSON.parse(value)
+ var time=data.time;
+ if((datetime-time)>millSec){
+ nolocalDictsKeys.push(i)
+ localStorage.removeItem(key);
+ }else{
+ localDicts[i]=data.options
+ }
+
+ }else{
+ nolocalDictsKeys.push(i)
+ }
+ })
+ if(nolocalDictsKeys.length==0){
+ var res={data:{tips:{isOk:true,msg:"成功"},data:localDicts}}
+ resolve(res)
+ }else{
+ getDicts({categoryId:categoryId,itemCodes:nolocalDictsKeys}).then(res=>{
+ if(!res.data.tips){
+ reject(res)
+ }else if(res.data.tips.isOk){
+ var data=res.data.data
+ var dicts=localDicts;
+ data.forEach(dict=>{
+ if(dict.optionList){
+ dict.options=JSON.parse(dict.optionList)
+ }else{
+ dict.options=[]
+ }
+ dicts[dict.itemCode]=dict.options
+ localStorage.setItem(categoryId+'_@'+dict.itemCode,JSON.stringify({options:dict.options,time:datetime}))
+ })
+ res.data.data=dicts;
+ resolve(res);
+ }else{
+ resolve(res);
+ }
+ }).catch(e=>reject(e));
+ }
+ });
+};
+/**下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex','grade']} 返回结果
+ {
+ sex:{id:'',itemCode:'',itemName:'',itemType:'',values:'',names:'','options':[{id:'1',name:'男'},{id:'2',name:'女'}]}
+ grade:{id:'',itemCode:'',itemName:'',itemType:'',values:'',names:'','options':[{id:'1',name:'等级1'},{id:'2',name:'等级2'}]}
+ }
+
+ ***/
+export const initComplexDicts=function(categoryId,itemCodes){
+
+ if(!categoryId){
+ categoryId="all"
+ }
+ return new Promise((resolve, reject) => {
+ getDicts({categoryId:categoryId,itemCodes:itemCodes}).then(res=>{
+ if(!res.data.tips){
+ reject(res)
+ }else if(res.data.tips.isOk){
+ var data=res.data.data
+ var dicts={};
+ data.forEach(dict=>{
+ if(dict.optionList){
+ dict.options=JSON.parse(dict.optionList)
+ }else{
+ dict.options=[]
+ }
+ dicts[dict.itemCode]=dict
+ })
+ res.data.data=dicts;
+ resolve(res);
+ }else{
+ resolve(res);
+ }
+ }).catch(e=>reject(e));
+ });
+};
+
//模糊查询数据项定义 条件之间or关系
//export const listItemKey = params => { return axios.get(`${base}/mdp/meta/item/listKey`, { params: params }); };
@@ -26,4 +127,12 @@ export const batchDelItem = params => { return axios.post(`${base}/mdp/meta/item
export const editItem = params => { return axios.post(`${base}/mdp/meta/item/edit`, params); };
//新增一条数据项定义
-export const addItem = params => { return axios.post(`${base}/mdp/meta/item/add`, params); };
\ No newline at end of file
+export const addItem = params => { return axios.post(`${base}/mdp/meta/item/add`, params); };
+
+//新增一条数据项定义
+export const copyToNewCategory = params => { return axios.post(`${base}/mdp/meta/item/copyToNewCategory`, params); };
+
+//新增或者修改
+export const insertOrUpdateItem = params => { return axios.post(`${base}/mdp/meta/item/insertOrUpdate`, params); };
+
+
diff --git a/src/views/xm/XmOverview.vue b/src/views/xm/XmOverview.vue
index 8a6e81f8..816ff9ad 100644
--- a/src/views/xm/XmOverview.vue
+++ b/src/views/xm/XmOverview.vue
@@ -335,7 +335,7 @@
diff --git a/src/views/xm/core/xmTask/XmTaskEdit.vue b/src/views/xm/core/xmTask/XmTaskEdit.vue
index 9de25a0d..a4580e27 100644
--- a/src/views/xm/core/xmTask/XmTaskEdit.vue
+++ b/src/views/xm/core/xmTask/XmTaskEdit.vue
@@ -2,194 +2,194 @@
-
-
-
- 计划项
- 任务
-
-
- 任务:任务一般不再包含子任务;建议细分到一个人一天或者几天内能完成这种粒度,任务的预算不能大于上一级预算。
- 计划:计划负责分解上级预算,汇总统计下级实际数据,计划下包含子计划或者子任务
-
-
- {{editForm.projectName?editForm.projectName:editForm.projectId}}
-
-
-
- {{editForm.productName?editForm.productName:editForm.productId}}
-
-
-
- {{editForm.parentTaskname?editForm.parentTaskname:editForm.parentTaskid}}
- 无上级(视为顶级)
-
-
-
-
-
-
- 如1.0或者1.2.3等
-
标记为里程碑
-
-
- {{editForm.preTaskname}}
- 选前置
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 增加
- {{item.taskSkillName}}
-
-
-
-
- {{editForm.tagNames?editForm.tagNames:''}}
- 标签
-
-
-
-
-
-
-
-
-
-
- {{editForm.createUsername}}
- 设置负责人
-
-
- {{editForm.executorUsername}}
- 设置执行人
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 计划项
+ 任务
-
+
+ 任务:任务一般不再包含子任务;建议细分到一个人一天或者几天内能完成这种粒度,任务的预算不能大于上一级预算。
+ 计划:计划负责分解上级预算,汇总统计下级实际数据,计划下包含子计划或者子任务
+
+
+ {{editForm.projectName?editForm.projectName:editForm.projectId}}
+
+
+
+ {{editForm.productName?editForm.productName:editForm.productId}}
+
+
+
+ {{editForm.parentTaskname?editForm.parentTaskname:editForm.parentTaskid}}
+ 无上级(视为顶级)
-
-
- 人时,{{this.toFixed(editForm.budgetWorkload/8/20)}}人月
-
- 是否为众包任务
-
-
-
- 工时单价 元/人时
-
-
- 工时单价 元/人时
+
+
+
+
+
+ 如1.0或者1.2.3等
+
标记为里程碑
+
+
+ {{editForm.preTaskname}}
+ 选前置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 预估金额 元
-
-
- 由后台自动计算,无需填写
-
-
- 由后台自动计算,无需填写
-
-
-
-
- 是否需要结算
-
-
-
-
-
-
-
-
-
-
- 发布到互联网任务大厅
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 增加
+ {{item.taskSkillName}}
+
+
+
+
+ {{editForm.tagNames?editForm.tagNames:''}}
+ 标签
+
+
+
+
+
+ {{editForm.createUsername}}
+ 设置负责人
+
+
+ {{editForm.executorUsername}}
+ 设置执行人
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 人时,{{this.toFixed(editForm.budgetWorkload/8/20)}}人月
+
+ 是否为众包任务
+
+
+
+ 工时单价 元/人时
+
+
+ 工时单价 元/人时
+
+
+ 预估金额 元
+
+
+
+
+
+
+
+
+
+
+
+
+ 由后台自动计算,无需填写
+
+
+ 由后台自动计算,无需填写
+
+
+
+
+ 是否需要结算
+
+
+
+
+
+
+
+
+
+ 发布到互联网任务大厅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -201,10 +201,10 @@
-->
-
+
-
+
@@ -215,7 +215,7 @@
-
+
@@ -235,7 +235,7 @@