TreeviewCopyright © aleen42 all right reserved, powered by aleen42

移动端

移动端和pc端公用元数据、工作流、业务流,后端函数可公用。移动端的页面和前端脚本以及发布应用是独立的。

一、体检预约单

1.1 列表页

  • 1、页面设计

调整列表页显示字段:姓名、手机号、身份证号、体检套餐、预约日期、价格。如下图

  • 2、功能(只看本人创建的预约单)
viewModel.on('beforeSearch',(args)=>{
  let userId = cb.context.getUserId();
  args.params.condition.simpleVOs=[
    {
      "field": "creator",
      "op": "eq",
      "value1": userId
    }
  ];
})

1.2 详情页

  • 1、页面设计

表头: 手机号、姓名、客户分类:必填; 身份证号:必填 根据身份证号自动计算年龄和性别; 价格:不可修改,设置公式sum子表的使用金额,所有数值的精度为2 性别、年龄、客户:不可修改

效果如下图:

子表: 体检项目必填,其余字段不可编辑; 选择体检项目,其余字段自动带入;

效果如下图:

  • 2、功能:根据身份证号自动计算年龄和性别
//身份证带出年龄和性别
viewModel.get('identity').on('afterValueChange',(data)=>{
  debugger;
  if(data && data.value != "") {
    let identity = JSON.parse(data.value).identity;
    let sex = parseInt(identity.substr(16, 1)) % 2 == 1 ? '1' : '2';
    let age = getAge(identity);
    viewModel.get('gender').setValue(sex);
    viewModel.get('age').setValue(age);
  }

})   

function getAge(userCard) {
  var myDate = new Date();
  var month = myDate.getMonth() + 1;
  var day = myDate.getDate();
  var age = myDate.getFullYear() - userCard.substring(6, 10) - 1;
  if (userCard.substring(10, 12) < month || userCard.substring(10, 12) == month && userCard.substring(12, 14) <= day) {
      age++;
  }
  return age;
}
  • 3、功能:详情增加动作扩展(和pc动作通用)

  • 4、子表功能:体检项目必填,其余字段不可编辑
//editRowModel的字段状态
viewModel.on('afterLoadData',(args)=>{
  viewModel.getGridModel().getEditRowModel().get("project_name").setState('bIsNull',false);
  viewModel.getGridModel().getEditRowModel().get("examination_kit_name").setState('bCanModify',false);
  viewModel.getGridModel().getEditRowModel().get("original_price").setState('bCanModify',false);
  viewModel.getGridModel().getEditRowModel().get("price").setState('bCanModify',false);
  viewModel.getGridModel().getEditRowModel().get("is_kit").setState('bCanModify',false);
  viewModel.getGridModel().getEditRowModel().get("useprice").setState('bCanModify',false);
  viewModel.getGridModel().getEditRowModel().get("product_standard_name").setState('bCanModify',false);
})
  • 5、子表功能:选择体检项目,其余字段自动带入
//选择项目带入其他字段
viewModel.getGridModel().getEditRowModel().get("project_name").on("afterValueChange",(args)=>{ 
  let index = viewModel.getGridModel().getFocusedRowIndex();
  viewModel.getGridModel().getEditRowModel().get('original_price').setValue(args.value.original_price);
  viewModel.getGridModel().setCellValue(index,"original_price",args.value.original_price);
  viewModel.getGridModel().setCellValue(index,'original_price',args.value.original_price);
  // 所属套餐 examination_kit_name
  viewModel.getGridModel().getEditRowModel().get('examination_kit').setValue(args.value.examination_kit_id);
  viewModel.getGridModel().setCellValue(index,'examination_kit',args.value.examination_kit_id);
  viewModel.getGridModel().getEditRowModel().get('examination_kit_name').setValue(args.value.examination_kit_id_name);
  viewModel.getGridModel().setCellValue(index,'examination_kit_name',args.value.examination_kit_id_name);
  //套餐价格
  viewModel.getGridModel().getEditRowModel().get('price').setValue(args.value.price);
  viewModel.getGridModel().setCellValue(index,'price',args.value.price);
  //是否套餐
  viewModel.getGridModel().getEditRowModel().get('is_kit').setValue("2");
  viewModel.getGridModel().setCellValue(index,'is_kit',"2");
  //使用金额
  viewModel.getGridModel().getEditRowModel().get('useprice').setValue(args.value.original_price,true);
  viewModel.getGridModel().setCellValue(index,'useprice',args.value.original_price);
  //物料
  viewModel.getGridModel().getEditRowModel().get('product_standard').setValue(args.value.product);
  viewModel.getGridModel().setCellValue(index,'product_standard',args.value.product);
  viewModel.getGridModel().getEditRowModel().get('product_standard_name').setValue(args.value.product_name);
  viewModel.getGridModel().setCellValue(index,'product_standard_name',args.value.product_name);
})
  • 6、子表功能:编辑页,拦截保存动作
viewModel.get("btnSubSave_1").on('click',(data)=>{
  if(!viewModel.getGridModel().getEditRowModel().get("project_name").getValue()) {
    cb.utils.alert("项目不能为空");
    return false;
  }
  viewModel.biz.do('closePage',viewModel);
})
  • 7、主子联动:选择主表所属套餐,子表自动增加下属项目
let gridModel = viewModel.getGridModel();
viewModel.get("pay_examination_kitList").on("afterValueChange",function(data){
  //旧的数据  套餐id放数组
  let oldData = gridModel.getDataSourceRows();
  let oldRows = gridModel.getRows();
  let rowsDataState = gridModel.__data.rowsDataState
  let delIndex = [];
  if(data && data.value.length > 0) {
    let result = cb.rest.invokeFunction("AT17925AEA1C18000A.api.getProjectById", {data:data.value},function(err, res) {},viewModel, {async:false});
    debugger;
    //新的数据  套餐id放数组
    let newData = result.result.res;
    let newKit = [];
    newData.forEach((item,index)=>{
      newKit.push(item.examination_kit);
    })

    let oldKit = [];
    oldRows.forEach((item,index)=>{
      if(item.is_kit == '1') {
        oldKit.push(item.examination_kit);
      }
    })
    //多的数据就新增
    let addRows = [];
    newData.forEach((item,index)=>{
      if(!oldKit.includes(item.examination_kit)) {
        item.is_kit = '1';
        addRows.push(item);
        rowsDataState.push("Insert");
      }
    })
    //少的套餐就删除
    oldRows.forEach((item,index)=>{
      if(item.is_kit == '1' && !newKit.includes(item.examination_kit)) {
        delIndex.push(index);
      }
    })

    gridModel.setDataSource(oldData.concat(addRows));
    gridModel.__data.rowsDataState = rowsDataState;
    rowsDataState.forEach((item,index)=>{
      if(item == "Delete") {
        delIndex.push(index);
      }
    })
  } else {
    if(data) {
      oldRows.forEach((item,index)=>{
        if(item.is_kit == '1') {
          delIndex.push(index);
        }
      })
    }
  }
  viewModel.setCache('remark',1);
  gridModel.deleteRows(delIndex);
})
  • 8、主子联动:子表删行,如果是删除的套餐项目,那么套餐中的其他项目更新使用金额=原价,是否套餐更新为否
gridModel.on('beforeDeleteRows',(args)=>{
  let mark = viewModel.getCache('remark');
  if(!mark) {
    if(args[0].is_kit == '1') {
      cb.utils.confirm("删除后不满足套餐的情况体检项将按照原价计算",function(){

      let rows = gridModel.getRows();
      let delIndex;
      rows.forEach((item,index)=>{
        //删除数据
        if(item._id == args[0]._id) {
          delIndex = index;
        } else {
          //更新同套餐数据
          if((item.examination_kit == args[0].examination_kit) && (item.is_kit == '1')) {
            item.is_kit = '2';
            item.useprice = item.original_price;
            gridModel.updateRow(index,item);
          }
        }
      })
      //删除数据
      viewModel.setCache('remark',1);
      gridModel.deleteRows([delIndex]);
      //更新表头套餐
      let kitList = viewModel.get("pay_examination_kitList").getData();
      let newKitList = [];
      let count = 0;
      kitList.forEach((item,index)=>{
        if(item.examination_kit == args[0].examination_kit) {
          if(item.id) {
            item._status = "Delete";
            newKitList.push(item);
          }
        } else {
          newKitList.push(item);
        }
      })
      debugger;
      viewModel.get("pay_examination_kitList").doPropertyChange('clearTag');
      viewModel.get("pay_examination_kitList").setData(newKitList);

      },function(){
        return false;
      })

      return false;
    }

  } else {
    viewModel.clearCache("remark");
  }
})

二、体检单

2.1 列表页

  • 1、页面设计

字段调整如下图:

  • 2、功能:只看本人创建的客户的体检单
//前端脚本
viewModel.on('beforeSearch',(args)=>{
  let result = cb.rest.invokeFunction("AT17925AEA1C18000A.api.getCustomer", {},
  function(err, res) {},viewModel,{async:false})
  let arr = [];
  result.result.res.forEach((item,index)=>{
    arr.push(item.customer)
  })
  args.params.condition.simpleVOs=[
    {
      "field": "merchant",
      "op": "in",
      "value1": arr
    }
  ];
})
//后端脚本
let AbstractAPIHandler = require('AbstractAPIHandler');
  class MyAPIHandler extends AbstractAPIHandler {
   execute(request){
    let userId = ObjectStore.user().id;
    let sql = "select customer from AT17925AEA1C18000A.AT17925AEA1C18000A.pay where  creator= '"+ userId+"'";
    var res = ObjectStore.queryByYonQL(sql);
   return {res};

 }
}
exports({"entryPoint":MyAPIHandler});

2.2 详情页

Copyright © 用友 -【生态技术部】 2022-2023 all right reserved,powered by Gitbook修订时间: 2023-04-20 16:45:07

results matching ""

    No results matching ""