Browse Source

实现打印功能

lwx_dev
erdanergou 3 years ago
parent
commit
48faf504b1
  1. 22
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  2. 36
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  3. 16
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java
  4. 32
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  5. 3
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java
  6. 16
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  7. 85
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  8. 49
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  9. BIN
      src/main/resources/static/js/JcPrinter/font/SourceHanSans-Regular.ttc
  10. BIN
      src/main/resources/static/js/JcPrinter/font/ZT001.ttf
  11. 369
      src/main/resources/static/js/JcPrinter/font/language.json
  12. 513
      src/main/resources/static/js/JcPrinter/index_Demo.js
  13. 60
      src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js
  14. 136
      src/main/resources/templates/pages/JcPrinter/PrinterIndex.html
  15. 11
      src/main/resources/templates/pages/material/material-out.html
  16. 216
      src/main/resources/templates/pages/materialtype/materialTypeByParentId.html
  17. 8
      src/main/resources/templates/pages/materialtype/materialType_view.html
  18. 32
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  19. 513
      target/classes/static/js/JcPrinter/index_Demo.js
  20. 60
      target/classes/static/js/JcPrinter/jcPrinterSdk_api_third.js
  21. 136
      target/classes/templates/pages/JcPrinter/PrinterIndex.html
  22. 11
      target/classes/templates/pages/material/material-out.html
  23. 216
      target/classes/templates/pages/materialtype/materialTypeByParentId.html
  24. 8
      target/classes/templates/pages/materialtype/materialType_view.html

22
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -1824,4 +1824,26 @@ public class MaterialController {
}
/**
* 用于修改对应的码值类型
* @param map 参数
* @return
*/
@PostMapping("updateQrCodeType")
public RestResponse updateQrCodeType(@RequestBody Map<String,Object> map){
// 获取转换类型
String type = (String) map.get("type");
int result = 0;
if("qTb".equals(type)){
// 如果是二维码转条形码
result = materialService.qrCodeToBarCode(map);
}else{
// 如果是条形码转二维码
result = materialService.barCodeToQrCode(map);
}
return CrudUtil.putHandle(1,result);
}
}

36
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -1562,7 +1562,7 @@ public class PageController {
}
@GetMapping("applicationInForGroup")
public ModelAndView applicationInForGroup(Integer gid,String type){
public ModelAndView applicationInForGroup(Integer gid, String type) {
ModelAndView mv = new ModelAndView();
List<Integer> gidList = new ArrayList<>();
if ("one".equals(type)) {
@ -2274,29 +2274,47 @@ public class PageController {
@GetMapping("/printCode")
public ModelAndView printCode(int mid,int flag) {
public ModelAndView printCode(int mid, int flag) {
ModelAndView mv = new ModelAndView();
if(flag == 1){
mv.addObject("mcode", "noMaterial");
mv.addObject("version", "noMaterial");
if (flag == 1) {
// 如果是物料
// 获取当前对应物料
Material materialById = materialService.findMaterialById(mid);
// 获取当前物料对应的码值
String qrCodeByMcode = materialService.findQrCodeByMcode(materialById.getCode());
mv.addObject("qrCode",qrCodeByMcode);
}else if(flag == 2){
mv.addObject("qrCode", qrCodeByMcode);
mv.addObject("mcode", materialById.getCode());
mv.addObject("name", materialById.getMname());
if (materialById.getVersion() != null) {
mv.addObject("version", materialById.getVersion());
}
} else if (flag == 2) {
// 如果是仓库
// 获取对应的仓库
Depository depositoryById = depositoryService.findDepositoryById(mid);
// 获取当前仓库对应的码值
String qrCodeByDepository = depositoryService.findQrCodeByDepository(mid);
mv.addObject("qrCode",qrCodeByDepository);
}else if(flag == 3){
mv.addObject("qrCode", qrCodeByDepository);
mv.addObject("name", depositoryById.getDname());
} else if (flag == 3) {
// 如果是库位
// 获取对应库位
Place placeById = placeService.findPlaceById(mid);
if (Integer.compare(0, placeById.getDid()) == 0) {
mv.addObject("name", "默认库位");
} else {
Depository depositoryById = depositoryService.findDepositoryById(placeById.getDid());
mv.addObject("name", depositoryById.getDname() + "-" + placeById.getCode());
}
// 获取当前库位对应的码值
String qrCodeByPlace = placeService.findQrCodeByPlace(mid);
mv.addObject("qrCode",qrCodeByPlace);
mv.addObject("qrCode", qrCodeByPlace);
}
mv.setViewName("pages/JcPrinter/PrinterIndex");
return mv;

16
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java

@ -370,4 +370,20 @@ public interface MaterialMapper {
* @return
*/
MaterialAndProducedDate findMaterialAndProducedDateByMidAndProducedDate(Map<String,Object> map);
/**
* 根据物料编码与码值获取对应对象
* @param map 查询条件
* @return
*/
MaterialAndBarCode findMaterialAndBarCodeByQrCode(Map<String,Object> map);
/**
* 用于修改编码类型
* @param map 修改数据
* @return
*/
Integer updateQrCodeAndMaterial(Map<String,Object> map);
}

32
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -576,6 +576,38 @@
group by mcode
</select>
<select id="findMaterialAndBarCodeByQrCode" resultMap="BarCodeAndMaterialMap" parameterType="map">
select
<include refid="materialAndBarCode" />
from materialandbarcode
where 1 = 1
<if test="mcode != null and mcode != ''">
and mcode = #{mcode}
</if>
<if test="qrCode != null and qrCode != ''">
and bmcode = #{qrCode}
</if>
and codeFlag = 2
</select>
<update id="updateQrCodeAndMaterial">
update qrcodeandmaterial
<set>
<if test="qrCode != null and qrCode != ''">
barCode = #{qrCode},
</if>
<if test="mcode != null and mcode != ''">
mcode = #{mcode},
</if>
<if test="flag != null and flag != ''">
flag = #{flag}
</if>
</set>
where id = #{id}
</update>
<select id="findMaterialByBarCodeCountByCondition" resultType="int" parameterType="map">
select count(*)
from qrcodeandmaterial

3
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java

@ -144,4 +144,7 @@ public interface MaterialTypeMapper {
*/
List<MaterialType> findMaterialTypeByOldIds(List<Long> list);
}

16
src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java

@ -356,4 +356,20 @@ public interface MaterialService {
* @return
*/
List<Object> InitTreeForSelectName(String mname,String type,Map<String,Object> map);
/**
* 用于将当前二维码转为条形码
* @param map 具体转换数据
* @return
*/
Integer qrCodeToBarCode(Map<String,Object> map);
/**
* 用于将当前条形码转为二维码
* @param map 具体转换数据
* @return
*/
Integer barCodeToQrCode(Map<String,Object> map);
}

85
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -878,6 +878,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("mid", inventory.getMid());
paramForSplitInfo.put("newUnit", unit);
// 获取对应拆单记录
SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo);
@ -2389,14 +2390,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
TransferRecord transferRecord = transferRecordMapper.findTransferRecordById(recordMin.getTransferId());
Integer mid = transferRecord.getMid();
// 获取转出时库存信息
Inventory material = materialMapper.findInventoryById(mid);
Inventory inventoryById = materialMapper.findInventoryById(mid);
param.put("mcode", material.getCode());
param.put("mcode", inventoryById.getCode());
param.put("depositoryId", transferRecord.getToId());
List<Inventory> inventories = materialMapper.findInventory(param);
// 获取当前处理的单位
String unit = recordMin.getUnit();
map.put("mid", material.getMid());
map.put("mid", inventoryById.getMid());
map.put("depositoryId", transferRecord.getToId());
map.put("placeId", transferRecord.getToPlaceId());
map.put("unit", unit);
@ -2406,56 +2407,75 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
if (inventories.size() > 0) {
// 如果在该仓库
map.put("price", material.getPrice().toString());
map.put("price", inventoryById.getPrice().toString());
// 进行入库操作
applicationInPlace(map);
} else {
}
else {
// 如果不在该仓库,插入一条新记录
Map<String, Object> insert = new HashMap<>();
// 转移数量
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
// 转移到的仓库
insert.put("depositoryId", transferRecord.getToId());
insert.put("price", material.getPrice());
insert.put("mid", material.getMid());
// 单价
insert.put("price", inventoryById.getPrice());
// 库存物料
insert.put("mid", inventoryById.getMid());
// 数量
insert.put("quantity", quantity);
insert.put("amounts", quantity * material.getPrice());
insert.put("depositoryCode", material.getDepositoryCode());
insert.put("producedDate", material.getProducedDate());
// 总额
insert.put("amounts", quantity * inventoryById.getPrice());
// 仓库编码
insert.put("depositoryCode", inventoryById.getDepositoryCode());
// 生产日期
insert.put("producedDate", inventoryById.getProducedDate());
// 插入一条库存记录
materialMapper.insertInventory(insert);
// 查询该记录
// 获取该库存记录
Inventory inventory = materialMapper.findInventoryById(ObjectFormatUtil.toInteger(insert.get("id")));
Map<String, Object> fromPlaceTemp = new HashMap<>();
// 转入库位所拥有的参数
Map<String, Object> toPlaceTemp = new HashMap<>();
// 转入库位
Place toPlace = placeMapper.findPlaceById(transferRecord.getToPlaceId());
toPlace.setQuantity(toPlace.getQuantity() + quantity);
placeMapper.UpdatePlace(toPlace); // 修改转入库位额度
// 设置参数
toPlaceTemp.put("mid", inventory.getId());
toPlaceTemp.put("pid", toPlace.getId());
toPlaceTemp.put("quantity", quantity);
// 获取转入物料具体所在库位
MaterialAndPlace toMaterialAndPlace = placeMapper.findPlaceAndMaterialByMidAndPid(toPlaceTemp);
if (toMaterialAndPlace == null) {
// 如果当前库位不存在该记录
placeMapper.addMaterialOnPlace(toPlaceTemp);
} else {
// 如果存在记录
toMaterialAndPlace.setQuantity(toMaterialAndPlace.getQuantity() + quantity);
placeMapper.updateMaterialAndPlace(toMaterialAndPlace);
}
}
} else {
}
else {
// 如果是拆单单位
// 用于获取当前拆单记录
Map<String, Object> paramForSplitInfo = new HashMap<>();
paramForSplitInfo.put("mid", material.getMid());
paramForSplitInfo.put("mid", inventoryById.getMid());
paramForSplitInfo.put("newUnit", unit);
// 获取当前拆单记录
SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取当前拆单与顶级之间的进制
int scaleQuantity = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1);
// 获取当前转移的数量
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
@ -2464,7 +2484,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取当前库存记录
Inventory inventory = inventories.get(0);
// 用于查询物料所在库位
// 用于查询该单位的物料所在库位
Map<String, Object> paramForInventoryToPlace = new HashMap<>();
paramForInventoryToPlace.put("pid", transferRecord.getToPlaceId());
paramForInventoryToPlace.put("mid", inventory.getId());
@ -2477,9 +2498,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Map<String, Object> paramForSplitInventory = new HashMap<>();
paramForSplitInventory.put("sid", splitInfo.getId());
paramForSplitInventory.put("iid", placeAndMaterial.getId());
// 获取当前拆单记录的库存记录
SplitInventory splitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
if (splitInventory != null) {
// 如果存在该库存记录
if (splitInfo.getQuantity() >= splitInventory.getSaveQuantity() + quantity) {
// 如果没达到当前进制数量
@ -2490,17 +2513,18 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
splitInventory.setInQuantity(splitInventory.getInQuantity() + quantity);
// 修改当前拆单库存处理记录
splitUnitMapper.updateSplitInventory(splitInventory);
} else {
// 如果大于当前进制数量
}
else {
// 如果大于当前进制数量(需要进行进位)
// 计算处理数量(下取整)
// 计算当前转移的处理数量,即进位数(下取整)
int disposeQuantity = (int) Math.round(Math.floor(quantity / (double) splitInfo.getQuantity()));
// 最终存储到拆单处理的数量
// 最终存储到拆单处理的数量(进位后剩余的数量)
double saveQuantity = quantity - disposeQuantity * splitInfo.getQuantity();
// 最终存储数量
// 最终存储数量(现存数量+进位后剩余数量)
int realQuantity = (int) Math.round(saveQuantity) + splitInventory.getSaveQuantity();
if (realQuantity >= splitInfo.getQuantity()) {
@ -2528,7 +2552,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 进行修改当前拆单库存数量
map.put("newInMid", placeAndMaterial.getId());
map.put("price", material.getPrice() / scaleQuantity);
map.put("price", inventoryById.getPrice() / scaleQuantity);
// 实际入库数量
map.put("realQuantity", quantity.toString());
@ -2600,7 +2624,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 进行修改当前拆单库存数量
map.put("newInMid", placeAndMaterial.getId());
map.put("price", material.getPrice() / scaleQuantity);
map.put("price", inventoryById.getPrice() / scaleQuantity);
// 实际入库数量
map.put("realQuantity", quantity.toString());
@ -2643,25 +2667,26 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} else {
// 如果不小于
map.put("price", material.getPrice() / scaleQuantity);
updateSplitInventoryForMoreScale(material, map, splitInfo, quantity, insertForMaterialAndPlace, insertForSplitInventory);
map.put("price", inventoryById.getPrice() / scaleQuantity);
updateSplitInventoryForMoreScale(inventoryById, map, splitInfo, quantity, insertForMaterialAndPlace, insertForSplitInventory);
}
}
} else {
}
else {
// 如果在转入的仓库中不存在该物料的库存记录
// 用于添加一条库存记录
Map<String, Object> insertForInventory = new HashMap<>();
insertForInventory.put("depositoryId", transferRecord.getToId());
insertForInventory.put("price", material.getPrice());
insertForInventory.put("mid", material.getMid());
insertForInventory.put("price", inventoryById.getPrice());
insertForInventory.put("mid", inventoryById.getMid());
insertForInventory.put("quantity", 0);
insertForInventory.put("amounts", 0);
insertForInventory.put("depositoryCode", material.getDepositoryCode());
insertForInventory.put("producedDate", material.getProducedDate());
insertForInventory.put("depositoryCode", inventoryById.getDepositoryCode());
insertForInventory.put("producedDate", inventoryById.getProducedDate());
// 添加一条库存记录
materialMapper.insertInventory(insertForInventory);
@ -2690,8 +2715,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
splitUnitMapper.addSplitInventory(insertForSplitInventory);
} else {
// 如果不小于
map.put("price", material.getPrice() / scaleQuantity);
updateSplitInventoryForMoreScale(material, map, splitInfo, quantity, insertForMaterialAndPlace, insertForSplitInventory);
map.put("price", inventoryById.getPrice() / scaleQuantity);
updateSplitInventoryForMoreScale(inventoryById, map, splitInfo, quantity, insertForMaterialAndPlace, insertForSplitInventory);
}
}

49
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -2444,6 +2444,55 @@ public class MaterialServiceImpl implements MaterialService {
return buildTreeForSelectName(list);
}
/**
* 用于将当前二维码转为条形码
* @param map 具体转换数据
* @return
*/
@Override
public Integer qrCodeToBarCode(Map<String, Object> map) {
MaterialAndBarCode materialAndBarCodeByQrCode = materialMapper.findMaterialAndBarCodeByQrCode(map);
if(materialAndBarCodeByQrCode != null){
// 如果当前存在记录
// 设置要修改的id
map.put("id",materialAndBarCodeByQrCode.getId());
// 将其改为条码
map.put("flag",1);
return materialMapper.updateQrCodeAndMaterial(map);
}else{
// 如果不存在记录
return -1;
}
}
/**
* 用于将当前条形码转为二维码
* @param map 具体转换数据
* @return
*/
@Override
public Integer barCodeToQrCode(Map<String, Object> map) {
MaterialAndBarCode materialAndBarCodeByQrCode = materialMapper.findMaterialAndBarCodeByQrCode(map);
if(materialAndBarCodeByQrCode != null){
// 如果当前存在记录
// 设置要修改的id
map.put("id",materialAndBarCodeByQrCode.getId());
// 将其改为二维码
map.put("flag",2);
return materialMapper.updateQrCodeAndMaterial(map);
}else{
// 如果不存在记录
return -1;
}
}
// 构造树形组件数据模板(通过物料名称搜索)
public Map<String, Object> InitTreeMenusForSelectName(MaterialType mt, List<Object> children) {
if (mt != null) {

BIN
src/main/resources/static/js/JcPrinter/font/SourceHanSans-Regular.ttc

Binary file not shown.

BIN
src/main/resources/static/js/JcPrinter/font/ZT001.ttf

Binary file not shown.

369
src/main/resources/static/js/JcPrinter/font/language.json

@ -0,0 +1,369 @@
{
"0020-007F": {
"description":"Basic_Latin",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"00A0-00FF":{
"description":"Latin-1_Supplement",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"0100-017F":{
"description":"Latin Extended-A",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"0370-03FF": {
"description":"Greek and Coptic",
"fontFile":""
},
"10A0-10FF": {
"description":"Georgian",
"fontFile":"NotoSansGeorgian-Regular.otf"
},
"0400-04FF": {
"description":"Cyrillic",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"0500-052F": {
"description":"Cyrillic Supplementary",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"0530-058F": {
"description":"Armenian",
"fontFile":"NotoSansArmenian-Regular.otf"
},
"0590-05FF":{
"description":"Hebrew",
"fontFile":"NotoSansHebrew-Regular.ttf"
},
"0600-06FF":{
"description":"Arabic",
"fontFile":"NotoNaskhArabic-Regular.ttf"
},
"0700-074F":{
"description":"Syriac",
"fontFile":"NotoSansSyriacEstrangela-Regular.ttf"
},
"0780-07BF":{
"description":"Thaana",
"fontFile":"NotoSansThaana-Regular.ttf"
},
"0900-097F":{
"description":"Devanagari",
"fontFile":"NotoSansDevanagari-Regular.otf"
},
"0980-09FF":{
"description":"Bengali",
"fontFile":"NotoSansBengali-Regular.otf"
},
"0A00-0A7F":{
"description":"Gurmukhi",
"fontFile":"NotoSansGurmukhi-Regular.ttf"
},
"0B00-0B7F":{
"description":"Oriya",
"fontFile":"NotoSansOriya-Regular.ttf"
},
"0B80-0BFF":{
"description":"Tamil",
"fontFile":"NotoSansTamil-Regular.otf"
},
"0C00-0C7F":{
"description":"Telugu",
"fontFile":"NotoSansTelugu-Regular.ttf"
},
"0C80-0CFF":{
"description":"Kannada",
"fontFile":"NotoSansKannada-Regular.ttf"
},
"0D00-0D7F":{
"description":"Malayalam",
"fontFile":"NotoSansMalayalam-Regular.otf"
},
"0D80-0DFF":{
"description":"Sinhala",
"fontFile":"NotoSansSinhala-Regular.otf"
},
"0E00-0E7F":{
"description":"Thai",
"fontFile":"NotoSansThai-Regular.ttf"
},
"0E80-0EFF":{
"description":"Lao",
"fontFile":"NotoSansLao-Regular.ttf"
},
"0F00-0FFF":{
"description":"Tibetan",
"fontFile":"NotoSansTibetan-Regular.ttf"
},
"1000-109F":{
"description":"Myanmar",
"fontFile":"NotoSansMyanmar-Regular-ZawDecode.ttf"
},
"10000-1007F":{
"description":"Linear B Syllabary",
"fontFile":"NotoSansLinearB-Regular.ttf"
},
"10080-100FF":{
"description":"Linear B Ideograms",
"fontFile":"NotoSansLinearB-Regular.ttf"
},
"10380-1039F":{
"description":"Ugaritic",
"fontFile":"NotoSansUgaritic-Regular.ttf"
},
"10450-1047F":{
"description":"Shavian",
"fontFile":"NotoSansShavian-Regular.ttf"
},
"10400-1044F":{
"description":"Deseret",
"fontFile":"NotoSansDeseret-Regular.ttf"
},
"10480-104AF":{
"description":"Osmanya",
"fontFile":"NotoSansOsmanya-Regular.ttf"
},
"10800-1083F":{
"description":"Cypriot ",
"fontFile":"NotoSansCypriot-Regular.ttf"
},
"1200-137F":{
"description":"Ethiopic",
"fontFile":"NotoSansEthiopic-Regular.ttf"
},
"13A0-13FF":{
"description":"Cherokee",
"fontFile":"NotoSansCherokee-Regular.ttf"
},
"1400-167F":{
"description":"Unified Canadian Aboriginal Syllabics",
"fontFile":"NotoSansCanadianAboriginal-Regular.ttf"
},
"1680-169F":{
"description":"Ogham",
"fontFile":"NotoSansOgham-Regular.ttf"
},
"16A0-16FF":{
"description":"Runic",
"fontFile":"NotoSansRunic-Regular.ttf"
},
"1700-171F":{
"description":"Tagalog",
"fontFile":"NotoSansTagalog-Regular.ttf"
},
"1720-173F":{
"description":"Hanunoo",
"fontFile":"NotoSansHanunoo-Regular.ttf"
},
"1740-175F":{
"description":"Buhid",
"fontFile":"NotoSansBuhid-Regular.ttf"
},
"1760-177F":{
"description":"Tagbanwa",
"fontFile":"NotoSansTagbanwa-Regular.ttf"
},
"1780-17FF":{
"description":"Khmer",
"fontFile":"NotoSansKhmer-VF.ttf"
},
"1800-18AF":{
"description":"Mongolian",
"fontFile":"NotoSansMongolian-Regular.ttf"
},
"1900-194F":{
"description":"Limbu",
"fontFile":"NotoSansLimbu-Regular.ttf"
},
"1950-197F":{
"description":"Tai Le",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"19E0-19FF":{
"description":"Khmer Symbols",
"fontFile":"NotoSansKhmer-VF.ttf"
},
"1D000-1D0FF":{
"description":"Byzantine Musical Symbols",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"1D300-1D35F":{
"description":"Tai Xuan Jing Symbols",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"1E00-1EFF":{
"description":"Latin Extended Additional",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"1F00-1FFF":{
"description":"Greek Extended",
"fontFile":"NotoSansSylotiNagri-Regular.ttf"
},
"2000-206F":{
"description":"General Punctuation",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"20000-2A6DF":{
"description":"CJK",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"20A0-20CF":{
"description":"Currency Symbols",
"fontFile":"NotoSansSymbols-Regular-Subsetted2.ttf"
},
"20D0-20FF":{
"description":"Combining Diacritical Marks for Symbols",
"fontFile":"NotoSansSymbols-Regular-Subsetted2.ttf"
},
"2100-214F":{
"description":"Letterlike Symbols",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"2200-22FF":{
"description":"Tai Le",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"2300-23FF":{
"description":"Miscellaneous Technical",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"2400-243F":{
"description":"Control Pictures",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"2440-245F":{
"description":"Optical Character Recognition",
"fontFile":"NotoSansGujarati-Regular.ttf"
},
"2460-24FF":{
"description":"Enclosed Alphanumerics",
"fontFile":"NotoSansGujarati-Regular.ttf"
},
"2500-257F":{
"description":"Box Drawing",
"fontFile":"NotoSansGujarati-Regular.ttf"
},
"2580-259F":{
"description":"Block Elements",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"25A0-25FF":{
"description":"Geometric Shapes",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"2600-26FF":{
"description":"Miscellaneous Symbols",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"2700-27BF":{
"description":"Dingbats",
"fontFile":"NotoSansTaiLe-Regular.ttf"
},
"27C0-27EF":{
"description":"@Miscellaneous Mathematical Symbols-A",
"fontFile":"NotoSansSymbols-Regular-Subsetted.ttf"
},
"27F0-27FF":{
"description":"@Supplemental Arrows-A",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2800-28FF":{
"description":"Braille Patterns",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2900-297F":{
"description":"@Supplemental Arrows-B",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2980-29FF":{
"description":"Miscellaneous Mathematical Symbols-B",
"fontFile":"NotoSansSymbols-Regular-Subsetted2.ttf"
},
"2A00-2AFF":{
"description":"@Supplemental Mathematical Operators",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2B00-2BFF":{
"description":"@Miscellaneous Symbols and Arrows",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2E80-2EFF":{
"description":"CJK Radicals Supplement",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"2F800-2FA1F":{
"description":"Tai Le",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"3040-309F":{
"description":"Hiragana",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"30A0-30FF":{
"description":"Katakana",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"3100-312F":{
"description":"Bopomofo",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"3130-318F":{
"description":"Hangul Compatibility Jamo",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"3190-319F":{
"description":"Kanbun",
"fontFile":"NotoSansKannada-Regular.ttf"
},
"31A0-31BF":{
"description":"Tai Le",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"31F0-31FF":{
"description":"Katakana Phonetic Extensions",
"fontFile":"NotoSansCJK-Regular.ttc"
},"3200-32FF":{
"description":"Enclosed CJK Letters and Months",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"3300-33FF":{
"description":"CJK Compatibility",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"4DC0-4DFF":{
"description":"Yijing Hexagram Symbols",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"4E00-9FFF":{
"description":"CJK Unified Ideographs",
"fontFile":"ZT001.ttf"
},
"FB00-FB4F":{
"description":"Alphabetic Presentation Forms",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FB50-FDFF":{
"description":"Arabic Presentation Forms-A",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FE00-FE0F":{
"description":"Variation Selectors",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FE20-FE2F":{
"description":"Combining Half Marks",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FE30-FE4F":{
"description":"CJK Compatibility Forms",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FE50-FE6F":{
"description":"Small Form Variants",
"fontFile":"NotoSansCJK-Regular.ttc"
},
"FF00-FFEF":{
"description":"Halfwidth and Fullwidth Forms",
"fontFile":"NotoSansCJK-Regular.ttc"
}
}

513
src/main/resources/static/js/JcPrinter/index_Demo.js

@ -53,11 +53,6 @@ document.write(
var bCanclePrint = false;
var base64Data = "";
var readerPrintData = new FileReader();
var readerPrinterInfo = new FileReader();
var strPrintData;
var strPrinterInfo;
var allPrinters;
var pageIndex = 1;
@ -76,12 +71,14 @@ var app = new Vue({
options: [],
tags: [],
isInit: false,
versionInit:false,
isInitApi: false,
isDraw: false,
isEditTag: false,
editIndex: 0,
dialogInitDrawingBoardParam: false,
dialogDrawLableTextParam: false,
dialogDrawLableNameTextParam: false,
dialogDrawLableVersionTextParam: false,
dialogDrawLableBarCodeParam: false,
dialogDrawLableQrCodeParam: false,
dialogDrawLableLineParam: false,
@ -92,6 +89,7 @@ var app = new Vue({
initSdkParam: {//初始化数据
"fontDir": "",
},
// 画布初始化参数
InitDrawingBoardParam: {
"width": 50,
"height": 30,
@ -100,12 +98,13 @@ var app = new Vue({
"verticalShift": 0,
"HorizontalShift": 0
},
DrawLableTextParam: {
"x": 1.0,
// 初始化名称文本参数
DrawLableNameTextParam: {
"x": 20.0,
"y": 1.0,
"height": 10,
"width": 50,
"value": "",
"value": document.getElementById("name").value,
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
@ -116,27 +115,47 @@ var app = new Vue({
"lineMode": 0,
"fontStyle": [false, false, false, false],
},
DrawLableBarCodeParam: {
"x": 20.0,
// 初始化型号
DrawLableVersionTextParam: {
"x": 10.0,
"y": 10.0,
"height": 10,
"width": 50,
"value": document.getElementById("materialQrCode").value,
"value": document.getElementById("version").value,
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
"textAlignHorizonral": 0,
"textAlignVertical": 0,
"letterSpacing": 1.0,
"lineSpacing": 1.0,
"lineMode": 0,
"fontStyle": [false, false, false, false],
},
// 初始化条形码参数
DrawLableBarCodeParam: {
"x": 5.0,
"y": 10.0,
"height": 10,
"width": 40,
"value": document.getElementById("materialQrCode").value,// 获取当前打印的码值
"codeType": 20,
"rotate": 0,
"fontSize": 4.0,
"textHeight": 0,
"textPosition": 0,
},
// 初始化二维码参数
DrawLableQrCodeParam: {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 10,
"value": document.getElementById("materialQrCode").value,
"value": document.getElementById("materialQrCode").value, //获取当前打印的码值
"rotate": 0,
"codeType": 31,
},
// 初始化线条参数
DrawLableLineParam: {
"x": 2.0,
"y": 2.0,
@ -146,6 +165,7 @@ var app = new Vue({
"lineType": 2,
"dashwidth": [1, 1],
},
// 初始化图形参数
DrawLableGraphParam: {
"x": 2.0,
"y": 5.0,
@ -158,6 +178,7 @@ var app = new Vue({
"lineType": 2,
"dashwidth": [1, 1],
},
// 初始化图片参数
DrawLableImageParam: {
"x": 2.0,
"y": 2.0,
@ -185,10 +206,80 @@ var app = new Vue({
},
mounted() {
// 初始化打印服务
getInstance();
let instance = getInstance();
if(!instance){
this.$alert('初始化打印服务失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
}
else{
getAllPrinters((data) => {
// 返回值规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印机获取失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
// 如果成功获取
// 当前的所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有名称
let allPrintersName = Object.keys(allPrinters);
// 所有对应值
let allPrintersValue = Object.values(allPrinters);
// 用于存储当前下拉框列表
this.options = [];
// 将其保存到数据中供前端展示
for (i = 0; i < allPrintersName.length; i++) {
// 设置新对象
let newopt = {};
// 设置标题
newopt.label = allPrintersName[i];
// 设置值
newopt.value = allPrintersValue[i];
// 添加对象
this.options.push(newopt)
}
// 选中打印机(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 设置sdk状态为true
initSdkStatus = true;
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
// 如果失败
this.$alert('打印设备连接失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
}
}))
}
})
}
},
methods: {
// 初始化
// sdk重新初始化
initSdkApi() {
initSdk(this.initSdkParam);
this.isInitApi = true
@ -199,37 +290,74 @@ var app = new Vue({
for (let index = 0; index < this.options.length; index++) {
if (this.value === this.options[index].value) printerName = this.options[index].label
}
// 选中打印设备(默认选中第一个)
selectPrinter(printerName, parseInt(this.value), (data => {
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
this.$alert('打印设备选择失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
// console.log(data)
}
}));
},
// 重新获取打印机
// 用于重新获取打印机
refreshPrinters() {
getAllPrinters(data => {
// 返回结果规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (isJSON(arrParse.resultAck.info)) {
// 获取所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有设备名称
let allPrintersName = Object.keys(allPrinters);
// 所有设备对应值
let allPrintersValue = Object.values(allPrinters);
// 下拉框值
this.options = [];
for (i = 0; i < allPrintersName.length; i++) {
// 选择项
let newopt = {};
// 选择项标题
newopt.label = allPrintersName[i];
// 选择项值
newopt.value = allPrintersValue[i];
// 添加选择项
this.options.push(newopt)
}
// 选中打印设备(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 返回结果规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印设备选择失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
// console.log(data)
}
}));
}
});
},
// 初始化画板
InitDrawingBoardApi() {
// 用于弹出“初始化绘图板参数”对话框
this.dialogInitDrawingBoardParam = true;
this.isDraw = false;
this.imgSrc = "";
@ -241,9 +369,13 @@ var app = new Vue({
this.isEditTag = true;
this.editIndex = index;
switch (tag.name) {
case "文本":
this.DrawLableTextParam = {...tag};
this.dialogDrawLableTextParam = true;
case "名称":
this.DrawLableNameTextParam = {...tag};
this.dialogDrawLableNameTextParam = true;
break;
case "型号":
this.DrawLableVersionTextParam = {...tag};
this.dialogDrawLableVersionTextParam = true;
break;
case "一维码":
this.DrawLableBarCodeParam = {...tag};
@ -269,6 +401,7 @@ var app = new Vue({
},
// 初始化画布
InitDrawingBoardPar(callbackFunction) {
// 如果没有填写高度或者宽度
if (!this.InitDrawingBoardParam.width || !this.InitDrawingBoardParam.height) {
this.$message({
message: '请选填写画板宽高',
@ -276,16 +409,94 @@ var app = new Vue({
});
return
}
// 设置宽度
this.InitDrawingBoardParam.width = Number(this.InitDrawingBoardParam.width);
// 设置高度
this.InitDrawingBoardParam.height = Number(this.InitDrawingBoardParam.height);
// 创建画板
/**
* 1.绘制元素前必须先初始化画板否则会引起崩溃
2.初始化画板时会清空画板上次绘制的内容
*/
InitDrawingBoard(this.InitDrawingBoardParam, callbackFunction);
InitDrawingBoard(this.InitDrawingBoardParam, res => {
// 返回结果规范化
var arrParse = JSON.parse(JSON.stringify(res));
if (arrParse.resultAck.result !== 0) {
// 如果初始化失败
this.isInit = false; // 隐藏生成按钮
this.$message({ // 发起提示
message: '初始化画布失败,请重试',
type: 'warning'
});
} else {
// 展示生成按钮
this.isInit = true;
let version = $("#version").val()
if("noMaterial" !== version){
this.versionInit = true;
}
}
});
// 关闭弹窗
this.dialogInitDrawingBoardParam = false;
this.isInit = true
},
// 文本
DrawLableNameTextApi() {
this.DrawLableNameTextParam.width = Number(this.DrawLableNameTextParam.width);
this.DrawLableNameTextParam.height = Number(this.DrawLableNameTextParam.height);
this.DrawLableNameTextParam.x = Number(this.DrawLableNameTextParam.x);
this.DrawLableNameTextParam.y = Number(this.DrawLableNameTextParam.y);
this.DrawLableNameTextParam.fontSize = Number(this.DrawLableNameTextParam.fontSize);
this.DrawLableNameTextParam.textAlignHorizonral = Number(this.DrawLableNameTextParam.textAlignHorizonral);
this.DrawLableNameTextParam.lineSpacing = Number(this.DrawLableNameTextParam.lineSpacing);
DrawLableText(this.DrawLableNameTextParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
this.DrawLableNameTextParam.name = "名称";
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableNameTextParam);
} else {
this.tags.push(this.DrawLableNameTextParam)
}
this.dialogDrawLableNameTextParam = false;
this.isDraw = true
},
// 型号
DrawLableVersionTextApi() {
this.DrawLableVersionTextParam.width = Number(this.DrawLableVersionTextParam.width);
this.DrawLableVersionTextParam.height = Number(this.DrawLableVersionTextParam.height);
this.DrawLableVersionTextParam.x = Number(this.DrawLableVersionTextParam.x);
this.DrawLableVersionTextParam.y = Number(this.DrawLableVersionTextParam.y);
this.DrawLableVersionTextParam.fontSize = Number(this.DrawLableVersionTextParam.fontSize);
this.DrawLableVersionTextParam.textAlignHorizonral = Number(this.DrawLableVersionTextParam.textAlignHorizonral);
this.DrawLableVersionTextParam.lineSpacing = Number(this.DrawLableVersionTextParam.lineSpacing);
DrawLableText(this.DrawLableVersionTextParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
this.DrawLableVersionTextParam.name = "型号";
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableVersionTextParam);
} else {
this.tags.push(this.DrawLableVersionTextParam)
}
this.dialogDrawLableVersionTextParam = false;
this.isDraw = true
},
// 一维码
DrawLableBarCodeApi() {
@ -293,8 +504,37 @@ var app = new Vue({
this.DrawLableBarCodeParam.height = Number(this.DrawLableBarCodeParam.height);
this.DrawLableBarCodeParam.x = Number(this.DrawLableBarCodeParam.x);
this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y);
if(this.versionInit){
this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y) + 10;
}
this.DrawLableBarCodeParam.name = "条形码";
DrawLableBarCode(this.DrawLableBarCodeParam);
// 发送请求将其变成条形码
let req = {};
req.qrCode = this.DrawLableBarCodeParam.value;
req.mcode = $("#materialCode").val();
req.type = "qTb";
$.ajax({
url: "/material/updateQrCodeType",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: result => {
DrawLableBarCode(this.DrawLableBarCodeParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
}
});
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableBarCodeParam);
} else {
@ -311,7 +551,32 @@ var app = new Vue({
this.DrawLableQrCodeParam.x = Number(this.DrawLableQrCodeParam.x);
this.DrawLableQrCodeParam.y = Number(this.DrawLableQrCodeParam.y);
this.DrawLableQrCodeParam.name = "二维码";
//DrawLableQrCode(this.DrawLableQrCodeParam);
let req = {};
req.qrCode = this.DrawLableQrCodeParam.value;
req.mcode = $("#materialCode").val();
req.type = "bTq";
$.ajax({
url: "/material/updateQrCodeType",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: result => {
DrawLableQrCode(this.DrawLableQrCodeParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
}
});
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableQrCodeParam);
} else {
@ -332,7 +597,10 @@ var app = new Vue({
InitDrawingBoard(this.InitDrawingBoardParam, (data => {
List.forEach(res => {
switch (res.name) {
case "文本":
case "名称":
DrawLableText(res);
break;
case "型号":
DrawLableText(res);
break;
case "条形码":
@ -360,9 +628,7 @@ var app = new Vue({
var base64Data = arrParse.resultAck.info;
var obj = JSON.parse(base64Data);
var data = obj.ImageData;
var imgDisplay = document.getElementById('base64image');
var errorCode = obj.errorCode;
this.imgSrc = "data:image/jpeg;base64," + data;
// self.isInit = false
}))
@ -374,7 +640,10 @@ var app = new Vue({
this.tags = [];
this.isDraw = false
},
DrawLableTextApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableTextNameApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableText(DrawLableTextParamDemo, callbackFunction);
},
DrawLableTextVersionNameApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableText(DrawLableTextParamDemo, callbackFunction);
},
DrawLableGraphApiDemo(callbackFunction) {
@ -387,8 +656,8 @@ var app = new Vue({
DrawLableBarCodeApiDemo(drawLableBarCodeParamDemo, callableFunction) {
DrawLableBarCode(drawLableBarCodeParamDemo, callableFunction)
},
DrawLableQrCodeApiDemo(drawLableQrCodeParamDemo,callableFunction){
DrawLableQrCode(drawLableQrCodeParamDemo,callableFunction)
DrawLableQrCodeApiDemo(drawLableQrCodeParamDemo, callableFunction) {
DrawLableQrCode(drawLableQrCodeParamDemo, callableFunction)
},
/**
@ -436,52 +705,106 @@ var app = new Vue({
return;
}
// 为了防止打印时未生成对应图像
// 为了防止打印时未生成对应图像事先初始化
// 初始化画板
InitDrawingBoard(this.InitDrawingBoardParam, (data1 => {
if(this.dialogDrawLableBarCodeParam){
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
if (this.dialogDrawLableBarCodeParam) {
// 如果打印条形码
this.DrawLableTextNameApiDemo(this.DrawLableNameTextParam,(data)=>{
if(this.versionInit){
this.DrawLableTextVersionNameApiDemo(this.DrawLableVersionTextParam,(data)=>{
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
})
}else{
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}else{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
})
} else {
// 如果打印二维码
this.DrawLableTextNameApiDemo(this.DrawLableNameTextParam,(data)=>{
if(this.versionInit){
this.DrawLableTextVersionNameApiDemo(this.DrawLableVersionTextParam,(data)=>{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
})
}else{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}))
}
})
}
}))
@ -536,18 +859,48 @@ var app = new Vue({
// 初始化画板
InitDrawingBoard(self.InitDrawingBoardParam, (data1 => {
if(this.dialogDrawLableBarCodeParam){
// 添加文字
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}else{
// 添加文字
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
if (this.dialogDrawLableBarCodeParam) {
// 添加名称
self.DrawLableTextNameApiDemo(self.DrawLableNameTextParam,(data)=>{
if(self.versionInit){
// 如果绘制型号
// 添加型号
self.DrawLableTextVersionNameApiDemo(self.DrawLableVersionTextParam,(data)=>{
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
})
}else{
// 如果不绘制型号
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
})
} else {
// 添加名称
self.DrawLableTextNameApiDemo(self.DrawLableNameTextParam,(data)=>{
// 如果绘制型号
if(self.versionInit){
// 添加型号
self.DrawLableTextVersionNameApiDemo(self.DrawLableVersionTextParam,(data)=>{
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
})
}else{
// 如果不绘制型号
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
})
}
}))// 提交数据
}, 500);

60
src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js

@ -15,7 +15,7 @@ var MessageList = {};
/**通过websocket发送消息 */
function sendMsg(msg, callback) {
console.log('sendMsg', msg.apiName);
//console.log('sendMsg', msg.apiName);
MessageList[msg.apiName] = callback;
var data = JSON.stringify(msg);
var tryTimes = 10;
@ -33,15 +33,23 @@ function getInstance() {
if ('WebSocket' in window) {
g_websocket = websocketLifePeriod();
} else {
console.log('unsupported websocket');
//return false;
g_websocket = null;
return false;
this.$alert('不支持websocket,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
//return false;
g_websocket = null;
return false;
}
});
}
//保持在线
//保持在线(开启定时任务,每3秒执行一次)
setInterval(function () {
if (g_websocket.readyState === 2 || g_websocket.readyState === 3) {
// 如果等待或者断开
getInstance();
}
}, 3000);
@ -53,8 +61,9 @@ function getInstance() {
function websocketLifePeriod() {
let websocket;
// 37989端口为jcPrinter.exe使用的端口
websocket = new WebSocket('ws://127.0.0.1:37989');
//websocket.binaryType = 'arraybuffer';
websocket.binaryType = 'arraybuffer';
websocket.onerror = function (evt) {//since there is an error, sockets will close so...
sok.onclose = function (e) {
console.log("WebSocket Error: ", e);
@ -81,7 +90,9 @@ function websocketLifePeriod() {
function connectCallback(e) {
ackJsonData = '';
console.log('websocket connect success');
// 设置连接状态为true
websocketConnectStatus = true;
// 初始化
init();
}
@ -105,7 +116,7 @@ function closeCallback(e) {
//1.1.4 读回调
function readCallback(e) {
var callBackInfo = e.data;
console.log('readCallback', callBackInfo);
//console.log('readCallback', callBackInfo);
ackJsonData = callBackInfo;
var callbackName;
@ -169,50 +180,73 @@ function errorCallback(e) {
//封装初始化SDK/获取打印机列表/选择打印机
function init() {
// 初始化sdk
initSdk(this.initSdkParam, function (data) {
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
// 如果初始化失败
this.$alert('初始化打印服务失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
return;
}
// 获取所有打印设备
getAllPrinters((data) => {
// 返回值规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印机获取失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
return;
} else if (isJSON(arrParse.resultAck.info)) {
// 如果成功获取
// 当前的所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有名称
let allPrintersName = Object.keys(allPrinters);
// 所有对应值
let allPrintersValue = Object.values(allPrinters);
// 用于存储当前下拉框列表
this.options = [];
// 将其保存到数据中供前端展示
for (i = 0; i < allPrintersName.length; i++) {
// 设置新对象
let newopt = {};
// 设置标题
newopt.label = allPrintersName[i];
// 设置值
newopt.value = allPrintersValue[i];
// 添加对象
this.options.push(newopt)
}
// 选中打印机
// 选中打印机(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 设置sdk状态为true
initSdkStatus = true;
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
// 如果失败
this.$alert('打印设备连接失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)

136
src/main/resources/templates/pages/JcPrinter/PrinterIndex.html

@ -9,6 +9,9 @@
<body>
<div id="app" class="container">
<input style="display:none;" id="materialQrCode" th:value="${qrCode}">
<input style="display:none;" id="materialCode" th:value="${mcode}">
<input style="display:none;" id="name" th:value="${name}">
<input style="display:none;" id="version" th:value="${version}">
<div class="title">
<H2>刷新</H2>
<div><el-button @click="initSdkApi()" type="primary">SDK初始化</el-button></div>
@ -46,6 +49,13 @@
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableQrCodeParam=true;isEditTag=false" type="primary">绘制二维码</el-button>
</div>
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableNameTextParam=true;isEditTag=false" type="primary">名称绘制</el-button>
</div>
<div style="margin-bottom:20px;" v-show="versionInit">
<el-button @click="dialogDrawLableVersionTextParam=true;isEditTag=false" type="primary">型号绘制</el-button>
</div>
</div>
</el-col>
<el-col :span="10">
@ -87,7 +97,6 @@
<el-option label="连续纸" value="3"></el-option>
<el-option label="定孔纸" value="4"></el-option>
<el-option label="透明纸" value="5"></el-option>
<el-option label="标牌" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="打印份数">
@ -102,17 +111,18 @@
</div>
<div>
<el-button style="margin: 0 20px 20px 40px;" @click="startPrintJob(3)" type="primary">单页多份打印</el-button>
<el-button style="margin: 0 0 20px 0;" @click="startPrintJob(4)"type="primary">多页多份打印</el-button>
<el-button style="margin: 0 0 20px 0;" @click="startPrintJob(4)" type="primary">多页多份打印</el-button>
</div>
</el-col>
</el-row>
</div>
<!-- 弹出框-->
<el-dialog title="画布初始化" :visible.sync="dialogInitDrawingBoardParam">
<el-form :model="form">
<el-form-item label="画布宽度" :label-width="formLabelWidth">
<el-form-item label="宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.width" ></el-input>
</el-form-item>
<el-form-item label="画布高度" :label-width="formLabelWidth">
<el-form-item label="高度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.height" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
@ -140,6 +150,12 @@
<el-form-item label="高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.height" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.y" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableBarCodeParam.rotate" placeholder="请选择旋转角度">
<el-option label="旋转0度" :value="0"></el-option>
@ -170,14 +186,11 @@
<el-form-item label="宽高" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.width" ></el-input>
</el-form-item>
<span style="color:red; padding-left:120px">此处不依据二维码类型校验二维码内容,可百度相关的条码类型输入符合要求的条码类型</span>
<el-form-item label="一维码类型" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.codeType" placeholder="请选择一维码类型">
<el-option label="QR_CODE" :value="31"></el-option>
<el-option label="PDF417" :value="32"></el-option>
<el-option label="DATA_MATRIX" :value="33"></el-option>
<el-option label="AZTEC" :value="34"></el-option>
</el-select>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.y" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.rotate" placeholder="请选择旋转角度">
@ -188,12 +201,109 @@
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableQrCodeParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableQrCodeApi()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制名称" :visible.sync="dialogDrawLableNameTextParam">
<el-form :model="form">
<el-form-item label="文本内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableNameTextParam.value" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.y" ></el-input>
</el-form-item>
<el-form-item label="文本宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.width" ></el-input>
</el-form-item>
<el-form-item label="文本高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.height" ></el-input>
</el-form-item>
<el-form-item label="字号" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.fontSize" ></el-input>
</el-form-item>
<el-form-item label="行距" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.lineSpacing" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableNameTextParam.rotate" placeholder="请选择活动区域">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
<el-form-item label="对齐方式" :label-width="formLabelWidth">
<el-select v-model="DrawLableNameTextParam.textAlignHorizonral" placeholder="请选择活动区域">
<el-option label="居左" :value="0"></el-option>
<el-option label="居右" :value="1"></el-option>
<el-option label="居中" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字体样式" :label-width="formLabelWidth">
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[0]">加粗</el-checkbox>
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[1]">斜体</el-checkbox>
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[2]">下划线</el-checkbox>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableNameTextParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableNameTextApi()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制型号" :visible.sync="dialogDrawLableVersionTextParam">
<el-form :model="form">
<el-form-item label="文本内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableVersionTextParam.value" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.y" ></el-input>
</el-form-item>
<el-form-item label="文本宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.width" ></el-input>
</el-form-item>
<el-form-item label="文本高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.height" ></el-input>
</el-form-item>
<el-form-item label="字号" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.fontSize" ></el-input>
</el-form-item>
<el-form-item label="行距" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.lineSpacing" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableVersionTextParam.rotate" placeholder="请选择活动区域">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
<el-form-item label="对齐方式" :label-width="formLabelWidth">
<el-select v-model="DrawLableVersionTextParam.textAlignHorizonral" placeholder="请选择活动区域">
<el-option label="居左" :value="0"></el-option>
<el-option label="居右" :value="1"></el-option>
<el-option label="居中" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字体样式" :label-width="formLabelWidth">
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[0]">加粗</el-checkbox>
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[1]">斜体</el-checkbox>
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[2]">下划线</el-checkbox>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableVersionTextParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableVersionTextApi()">确 定</el-button>
</div>
</el-dialog>
</div>
<script src="/static/js/vue/vue.js"></script>

11
src/main/resources/templates/pages/material/material-out.html

@ -165,7 +165,7 @@
{field: 'shelfLife', width: 150, title: '保质期'},
{field: 'productionPlace', width: 150, title: '产地'},
{field: 'remark', width: 150, title: '备注'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'},
{field: 'state', title: '状态', minWidth: 100, templet: '#switchTpl'},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]
],
@ -173,9 +173,6 @@
limit: 10,
page: true,
skin: 'line',
done: function () {
}
});
@ -191,13 +188,13 @@
if (data.brand !== '') {
req.brand = data.brand;
}
if (data.materialTypeId != '') {
if (data.materialTypeId !== '') {
req.materialTypeId = data.materialTypeId;
}
if (data.state != '') {
if (data.state !== '') {
req.state = data.state;
}
if (data.code != '') {
if (data.code !== '') {
req.code = data.code
}

216
src/main/resources/templates/pages/materialtype/materialTypeByParentId.html

@ -50,6 +50,11 @@
</div>
</fieldset>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="state" value="{{d.oldId}}" lay-skin="switch" lay-text="启用|禁用"
lay-filter="changeState" {{ d.state== 1 ? 'checked' : '' }} >
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
@ -105,15 +110,7 @@
{type: "checkbox", width: 50},
{field: 'tname', width: 120, title: '类型名称', sort: true},
{field: 'introduce', width: 200, title: '类型介绍', sort: true},
{
field: 'state', title: '状态', minWidth: 80, sort: true, templet: function (d) {
if (d.state == 1) {
return "启用";
} else if (d.state == 2) {
return "禁用";
}
}
},
{title: '状态', width: 100, templet: '#switchTpl', align: "center"},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
]
],
@ -169,38 +166,45 @@
var req = {};
req.ids = [];
for (i = 0, len = data.length; i < len; i++) {
req.ids[i] = data[i].id;
req.ids[i] = data[i].oldId;
}
$.ajax({
url: '/materialType/materialType_del',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
if (req.ids.length > 0) {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/materialType/materialType_del',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
//执行搜索重载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
} else {
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
//执行搜索重载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
}
}, 'data');
return false;
}
}, 'data');
return false;
}
}
})
}
})
})
} else {
layer.msg("未选中记录,请确认!");
return false;
}
}
});
@ -220,7 +224,7 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/materialType_detail?id=' + data.id,
content: '/materialType_detail?id=' + data.oldId,
});
$(window).on("resize", function () {
layer.full(index);
@ -228,7 +232,7 @@
return false;
} else if (obj.event === 'delete') {
var req = {};
req.id = data.id;
req.id = data.oldId;
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/materialType/materialType_del',
@ -256,6 +260,138 @@
});
}
});
//监听状态操作
form.on('switch(changeState)', function (obj) {
var req = new Map;
if (obj.elem.checked) {
req["state"] = 1;
}
req["id"] = this.value;
var hasMaterial = false;
if (req["state"] == undefined) { //如果禁用
$.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (data) {
hasMaterial = data.data;
if (hasMaterial) { // 如果有物品
layer.confirm('该种类下还有物品,确定禁用?', {
btn: ['禁用', '取消'] //按钮
}, function () {
$.ajax({
url: "/materialType/EditMaterialTypeState", // 禁用
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}, function () {
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
});
} else { // 如果没有物品
$.ajax({
url: "/materialType/EditMaterialTypeState",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
// 执行表格重加载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}
}
})
} else { // 如果启用
$.ajax({
url: "/materialType/EditMaterialTypeState",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
// 执行表格重加载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}
});
});
</script>

8
src/main/resources/templates/pages/materialtype/materialType_view.html

@ -120,11 +120,11 @@
{type: "checkbox", width: 50},
{field: 'tname', width: 120, title: '类型名称'},
{field: 'introduce', width: 200, title: '类型介绍'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'},
{title: '状态', width: 100, templet: '#switchTpl', align: "center"},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]
],
limits: [10, 15, 20, 25, 50,100],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
@ -140,7 +140,7 @@
if (data.tname !== '') {
req.tname = data.tname;
}
if (data.state != '') {
if (data.state !== '') {
req.state = data.state;
}
req.parentId = parentId;
@ -271,7 +271,7 @@
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
console.log(data)
if (obj.event === 'detail') {
req = {};
req.parentId = parentId;

32
target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -576,6 +576,38 @@
group by mcode
</select>
<select id="findMaterialAndBarCodeByQrCode" resultMap="BarCodeAndMaterialMap" parameterType="map">
select
<include refid="materialAndBarCode" />
from materialandbarcode
where 1 = 1
<if test="mcode != null and mcode != ''">
and mcode = #{mcode}
</if>
<if test="qrCode != null and qrCode != ''">
and bmcode = #{qrCode}
</if>
and codeFlag = 2
</select>
<update id="updateQrCodeAndMaterial">
update qrcodeandmaterial
<set>
<if test="qrCode != null and qrCode != ''">
barCode = #{qrCode},
</if>
<if test="mcode != null and mcode != ''">
mcode = #{mcode},
</if>
<if test="flag != null and flag != ''">
flag = #{flag}
</if>
</set>
where id = #{id}
</update>
<select id="findMaterialByBarCodeCountByCondition" resultType="int" parameterType="map">
select count(*)
from qrcodeandmaterial

513
target/classes/static/js/JcPrinter/index_Demo.js

@ -53,11 +53,6 @@ document.write(
var bCanclePrint = false;
var base64Data = "";
var readerPrintData = new FileReader();
var readerPrinterInfo = new FileReader();
var strPrintData;
var strPrinterInfo;
var allPrinters;
var pageIndex = 1;
@ -76,12 +71,14 @@ var app = new Vue({
options: [],
tags: [],
isInit: false,
versionInit:false,
isInitApi: false,
isDraw: false,
isEditTag: false,
editIndex: 0,
dialogInitDrawingBoardParam: false,
dialogDrawLableTextParam: false,
dialogDrawLableNameTextParam: false,
dialogDrawLableVersionTextParam: false,
dialogDrawLableBarCodeParam: false,
dialogDrawLableQrCodeParam: false,
dialogDrawLableLineParam: false,
@ -92,6 +89,7 @@ var app = new Vue({
initSdkParam: {//初始化数据
"fontDir": "",
},
// 画布初始化参数
InitDrawingBoardParam: {
"width": 50,
"height": 30,
@ -100,12 +98,13 @@ var app = new Vue({
"verticalShift": 0,
"HorizontalShift": 0
},
DrawLableTextParam: {
"x": 1.0,
// 初始化名称文本参数
DrawLableNameTextParam: {
"x": 20.0,
"y": 1.0,
"height": 10,
"width": 50,
"value": "",
"value": document.getElementById("name").value,
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
@ -116,27 +115,47 @@ var app = new Vue({
"lineMode": 0,
"fontStyle": [false, false, false, false],
},
DrawLableBarCodeParam: {
"x": 20.0,
// 初始化型号
DrawLableVersionTextParam: {
"x": 10.0,
"y": 10.0,
"height": 10,
"width": 50,
"value": document.getElementById("materialQrCode").value,
"value": document.getElementById("version").value,
"fontFamily": "宋体",
"rotate": 0,
"fontSize": 4.0,
"textAlignHorizonral": 0,
"textAlignVertical": 0,
"letterSpacing": 1.0,
"lineSpacing": 1.0,
"lineMode": 0,
"fontStyle": [false, false, false, false],
},
// 初始化条形码参数
DrawLableBarCodeParam: {
"x": 5.0,
"y": 10.0,
"height": 10,
"width": 40,
"value": document.getElementById("materialQrCode").value,// 获取当前打印的码值
"codeType": 20,
"rotate": 0,
"fontSize": 4.0,
"textHeight": 0,
"textPosition": 0,
},
// 初始化二维码参数
DrawLableQrCodeParam: {
"x": 20.0,
"y": 10.0,
"height": 10,
"width": 10,
"value": document.getElementById("materialQrCode").value,
"value": document.getElementById("materialQrCode").value, //获取当前打印的码值
"rotate": 0,
"codeType": 31,
},
// 初始化线条参数
DrawLableLineParam: {
"x": 2.0,
"y": 2.0,
@ -146,6 +165,7 @@ var app = new Vue({
"lineType": 2,
"dashwidth": [1, 1],
},
// 初始化图形参数
DrawLableGraphParam: {
"x": 2.0,
"y": 5.0,
@ -158,6 +178,7 @@ var app = new Vue({
"lineType": 2,
"dashwidth": [1, 1],
},
// 初始化图片参数
DrawLableImageParam: {
"x": 2.0,
"y": 2.0,
@ -185,10 +206,80 @@ var app = new Vue({
},
mounted() {
// 初始化打印服务
getInstance();
let instance = getInstance();
if(!instance){
this.$alert('初始化打印服务失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
}
else{
getAllPrinters((data) => {
// 返回值规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印机获取失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
// 如果成功获取
// 当前的所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有名称
let allPrintersName = Object.keys(allPrinters);
// 所有对应值
let allPrintersValue = Object.values(allPrinters);
// 用于存储当前下拉框列表
this.options = [];
// 将其保存到数据中供前端展示
for (i = 0; i < allPrintersName.length; i++) {
// 设置新对象
let newopt = {};
// 设置标题
newopt.label = allPrintersName[i];
// 设置值
newopt.value = allPrintersValue[i];
// 添加对象
this.options.push(newopt)
}
// 选中打印机(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 设置sdk状态为true
initSdkStatus = true;
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
// 如果失败
this.$alert('打印设备连接失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
}
}))
}
})
}
},
methods: {
// 初始化
// sdk重新初始化
initSdkApi() {
initSdk(this.initSdkParam);
this.isInitApi = true
@ -199,37 +290,74 @@ var app = new Vue({
for (let index = 0; index < this.options.length; index++) {
if (this.value === this.options[index].value) printerName = this.options[index].label
}
// 选中打印设备(默认选中第一个)
selectPrinter(printerName, parseInt(this.value), (data => {
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
this.$alert('打印设备选择失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)
// console.log(data)
}
}));
},
// 重新获取打印机
// 用于重新获取打印机
refreshPrinters() {
getAllPrinters(data => {
// 返回结果规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (isJSON(arrParse.resultAck.info)) {
// 获取所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有设备名称
let allPrintersName = Object.keys(allPrinters);
// 所有设备对应值
let allPrintersValue = Object.values(allPrinters);
// 下拉框值
this.options = [];
for (i = 0; i < allPrintersName.length; i++) {
// 选择项
let newopt = {};
// 选择项标题
newopt.label = allPrintersName[i];
// 选择项值
newopt.value = allPrintersValue[i];
// 添加选择项
this.options.push(newopt)
}
// 选中打印设备(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 返回结果规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印设备选择失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
// console.log(data)
}
}));
}
});
},
// 初始化画板
InitDrawingBoardApi() {
// 用于弹出“初始化绘图板参数”对话框
this.dialogInitDrawingBoardParam = true;
this.isDraw = false;
this.imgSrc = "";
@ -241,9 +369,13 @@ var app = new Vue({
this.isEditTag = true;
this.editIndex = index;
switch (tag.name) {
case "文本":
this.DrawLableTextParam = {...tag};
this.dialogDrawLableTextParam = true;
case "名称":
this.DrawLableNameTextParam = {...tag};
this.dialogDrawLableNameTextParam = true;
break;
case "型号":
this.DrawLableVersionTextParam = {...tag};
this.dialogDrawLableVersionTextParam = true;
break;
case "一维码":
this.DrawLableBarCodeParam = {...tag};
@ -269,6 +401,7 @@ var app = new Vue({
},
// 初始化画布
InitDrawingBoardPar(callbackFunction) {
// 如果没有填写高度或者宽度
if (!this.InitDrawingBoardParam.width || !this.InitDrawingBoardParam.height) {
this.$message({
message: '请选填写画板宽高',
@ -276,16 +409,94 @@ var app = new Vue({
});
return
}
// 设置宽度
this.InitDrawingBoardParam.width = Number(this.InitDrawingBoardParam.width);
// 设置高度
this.InitDrawingBoardParam.height = Number(this.InitDrawingBoardParam.height);
// 创建画板
/**
* 1.绘制元素前必须先初始化画板否则会引起崩溃
2.初始化画板时会清空画板上次绘制的内容
*/
InitDrawingBoard(this.InitDrawingBoardParam, callbackFunction);
InitDrawingBoard(this.InitDrawingBoardParam, res => {
// 返回结果规范化
var arrParse = JSON.parse(JSON.stringify(res));
if (arrParse.resultAck.result !== 0) {
// 如果初始化失败
this.isInit = false; // 隐藏生成按钮
this.$message({ // 发起提示
message: '初始化画布失败,请重试',
type: 'warning'
});
} else {
// 展示生成按钮
this.isInit = true;
let version = $("#version").val()
if("noMaterial" !== version){
this.versionInit = true;
}
}
});
// 关闭弹窗
this.dialogInitDrawingBoardParam = false;
this.isInit = true
},
// 文本
DrawLableNameTextApi() {
this.DrawLableNameTextParam.width = Number(this.DrawLableNameTextParam.width);
this.DrawLableNameTextParam.height = Number(this.DrawLableNameTextParam.height);
this.DrawLableNameTextParam.x = Number(this.DrawLableNameTextParam.x);
this.DrawLableNameTextParam.y = Number(this.DrawLableNameTextParam.y);
this.DrawLableNameTextParam.fontSize = Number(this.DrawLableNameTextParam.fontSize);
this.DrawLableNameTextParam.textAlignHorizonral = Number(this.DrawLableNameTextParam.textAlignHorizonral);
this.DrawLableNameTextParam.lineSpacing = Number(this.DrawLableNameTextParam.lineSpacing);
DrawLableText(this.DrawLableNameTextParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
this.DrawLableNameTextParam.name = "名称";
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableNameTextParam);
} else {
this.tags.push(this.DrawLableNameTextParam)
}
this.dialogDrawLableNameTextParam = false;
this.isDraw = true
},
// 型号
DrawLableVersionTextApi() {
this.DrawLableVersionTextParam.width = Number(this.DrawLableVersionTextParam.width);
this.DrawLableVersionTextParam.height = Number(this.DrawLableVersionTextParam.height);
this.DrawLableVersionTextParam.x = Number(this.DrawLableVersionTextParam.x);
this.DrawLableVersionTextParam.y = Number(this.DrawLableVersionTextParam.y);
this.DrawLableVersionTextParam.fontSize = Number(this.DrawLableVersionTextParam.fontSize);
this.DrawLableVersionTextParam.textAlignHorizonral = Number(this.DrawLableVersionTextParam.textAlignHorizonral);
this.DrawLableVersionTextParam.lineSpacing = Number(this.DrawLableVersionTextParam.lineSpacing);
DrawLableText(this.DrawLableVersionTextParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
this.DrawLableVersionTextParam.name = "型号";
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableVersionTextParam);
} else {
this.tags.push(this.DrawLableVersionTextParam)
}
this.dialogDrawLableVersionTextParam = false;
this.isDraw = true
},
// 一维码
DrawLableBarCodeApi() {
@ -293,8 +504,37 @@ var app = new Vue({
this.DrawLableBarCodeParam.height = Number(this.DrawLableBarCodeParam.height);
this.DrawLableBarCodeParam.x = Number(this.DrawLableBarCodeParam.x);
this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y);
if(this.versionInit){
this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y) + 10;
}
this.DrawLableBarCodeParam.name = "条形码";
DrawLableBarCode(this.DrawLableBarCodeParam);
// 发送请求将其变成条形码
let req = {};
req.qrCode = this.DrawLableBarCodeParam.value;
req.mcode = $("#materialCode").val();
req.type = "qTb";
$.ajax({
url: "/material/updateQrCodeType",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: result => {
DrawLableBarCode(this.DrawLableBarCodeParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
}
});
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableBarCodeParam);
} else {
@ -311,7 +551,32 @@ var app = new Vue({
this.DrawLableQrCodeParam.x = Number(this.DrawLableQrCodeParam.x);
this.DrawLableQrCodeParam.y = Number(this.DrawLableQrCodeParam.y);
this.DrawLableQrCodeParam.name = "二维码";
//DrawLableQrCode(this.DrawLableQrCodeParam);
let req = {};
req.qrCode = this.DrawLableQrCodeParam.value;
req.mcode = $("#materialCode").val();
req.type = "bTq";
$.ajax({
url: "/material/updateQrCodeType",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: result => {
DrawLableQrCode(this.DrawLableQrCodeParam, res => {
var arrParse = JSON.parse(JSON.stringify(res));
//⼀维码绘制失败,退出绘制
if (arrParse.resultAck.result !== 0) {
this.$message({ // 发起提示
message: '绘制失败,请重试',
type: 'warning'
});
}
});
}
});
if (this.isEditTag) {
this.$set(this.tags, this.editIndex, this.DrawLableQrCodeParam);
} else {
@ -332,7 +597,10 @@ var app = new Vue({
InitDrawingBoard(this.InitDrawingBoardParam, (data => {
List.forEach(res => {
switch (res.name) {
case "文本":
case "名称":
DrawLableText(res);
break;
case "型号":
DrawLableText(res);
break;
case "条形码":
@ -360,9 +628,7 @@ var app = new Vue({
var base64Data = arrParse.resultAck.info;
var obj = JSON.parse(base64Data);
var data = obj.ImageData;
var imgDisplay = document.getElementById('base64image');
var errorCode = obj.errorCode;
this.imgSrc = "data:image/jpeg;base64," + data;
// self.isInit = false
}))
@ -374,7 +640,10 @@ var app = new Vue({
this.tags = [];
this.isDraw = false
},
DrawLableTextApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableTextNameApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableText(DrawLableTextParamDemo, callbackFunction);
},
DrawLableTextVersionNameApiDemo(DrawLableTextParamDemo, callbackFunction) {
DrawLableText(DrawLableTextParamDemo, callbackFunction);
},
DrawLableGraphApiDemo(callbackFunction) {
@ -387,8 +656,8 @@ var app = new Vue({
DrawLableBarCodeApiDemo(drawLableBarCodeParamDemo, callableFunction) {
DrawLableBarCode(drawLableBarCodeParamDemo, callableFunction)
},
DrawLableQrCodeApiDemo(drawLableQrCodeParamDemo,callableFunction){
DrawLableQrCode(drawLableQrCodeParamDemo,callableFunction)
DrawLableQrCodeApiDemo(drawLableQrCodeParamDemo, callableFunction) {
DrawLableQrCode(drawLableQrCodeParamDemo, callableFunction)
},
/**
@ -436,52 +705,106 @@ var app = new Vue({
return;
}
// 为了防止打印时未生成对应图像
// 为了防止打印时未生成对应图像事先初始化
// 初始化画板
InitDrawingBoard(this.InitDrawingBoardParam, (data1 => {
if(this.dialogDrawLableBarCodeParam){
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
if (this.dialogDrawLableBarCodeParam) {
// 如果打印条形码
this.DrawLableTextNameApiDemo(this.DrawLableNameTextParam,(data)=>{
if(this.versionInit){
this.DrawLableTextVersionNameApiDemo(this.DrawLableVersionTextParam,(data)=>{
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
})
}else{
this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}else{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
})
} else {
// 如果打印二维码
this.DrawLableTextNameApiDemo(this.DrawLableNameTextParam,(data)=>{
if(this.versionInit){
this.DrawLableTextVersionNameApiDemo(this.DrawLableVersionTextParam,(data)=>{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
})
}else{
this.DrawLableQrCodeApiDemo(this.DrawLableBarCodeParam, (data => {
// 提交数据
var totalCount = parseInt(pageCount) * parseInt(quantityCount);
startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) {
bCanclePrint = false;
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
self.$message({
message: '打印失败!',
type: 'warning'
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
return;
}
var intPageCount = parseInt(pageCount);
var intQuantityCount = parseInt(quantityCount);
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount);
});
}))
}))
}
})
}
}))
@ -536,18 +859,48 @@ var app = new Vue({
// 初始化画板
InitDrawingBoard(self.InitDrawingBoardParam, (data1 => {
if(this.dialogDrawLableBarCodeParam){
// 添加文字
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}else{
// 添加文字
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
if (this.dialogDrawLableBarCodeParam) {
// 添加名称
self.DrawLableTextNameApiDemo(self.DrawLableNameTextParam,(data)=>{
if(self.versionInit){
// 如果绘制型号
// 添加型号
self.DrawLableTextVersionNameApiDemo(self.DrawLableVersionTextParam,(data)=>{
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
})
}else{
// 如果不绘制型号
self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
})
} else {
// 添加名称
self.DrawLableTextNameApiDemo(self.DrawLableNameTextParam,(data)=>{
// 如果绘制型号
if(self.versionInit){
// 添加型号
self.DrawLableTextVersionNameApiDemo(self.DrawLableVersionTextParam,(data)=>{
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
})
}else{
// 如果不绘制型号
self.DrawLableQrCodeApiDemo(self.DrawLableQrCodeParam, (data => {
self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount);
}))
}
})
}
}))// 提交数据
}, 500);

60
target/classes/static/js/JcPrinter/jcPrinterSdk_api_third.js

@ -15,7 +15,7 @@ var MessageList = {};
/**通过websocket发送消息 */
function sendMsg(msg, callback) {
console.log('sendMsg', msg.apiName);
//console.log('sendMsg', msg.apiName);
MessageList[msg.apiName] = callback;
var data = JSON.stringify(msg);
var tryTimes = 10;
@ -33,15 +33,23 @@ function getInstance() {
if ('WebSocket' in window) {
g_websocket = websocketLifePeriod();
} else {
console.log('unsupported websocket');
//return false;
g_websocket = null;
return false;
this.$alert('不支持websocket,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
//return false;
g_websocket = null;
return false;
}
});
}
//保持在线
//保持在线(开启定时任务,每3秒执行一次)
setInterval(function () {
if (g_websocket.readyState === 2 || g_websocket.readyState === 3) {
// 如果等待或者断开
getInstance();
}
}, 3000);
@ -53,8 +61,9 @@ function getInstance() {
function websocketLifePeriod() {
let websocket;
// 37989端口为jcPrinter.exe使用的端口
websocket = new WebSocket('ws://127.0.0.1:37989');
//websocket.binaryType = 'arraybuffer';
websocket.binaryType = 'arraybuffer';
websocket.onerror = function (evt) {//since there is an error, sockets will close so...
sok.onclose = function (e) {
console.log("WebSocket Error: ", e);
@ -81,7 +90,9 @@ function websocketLifePeriod() {
function connectCallback(e) {
ackJsonData = '';
console.log('websocket connect success');
// 设置连接状态为true
websocketConnectStatus = true;
// 初始化
init();
}
@ -105,7 +116,7 @@ function closeCallback(e) {
//1.1.4 读回调
function readCallback(e) {
var callBackInfo = e.data;
console.log('readCallback', callBackInfo);
//console.log('readCallback', callBackInfo);
ackJsonData = callBackInfo;
var callbackName;
@ -169,50 +180,73 @@ function errorCallback(e) {
//封装初始化SDK/获取打印机列表/选择打印机
function init() {
// 初始化sdk
initSdk(this.initSdkParam, function (data) {
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (arrParse.resultAck.result !== 0) {
// 如果初始化失败
this.$alert('初始化打印服务失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
return;
}
// 获取所有打印设备
getAllPrinters((data) => {
// 返回值规范化
let arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
this.$alert('打印机获取失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
return;
} else if (isJSON(arrParse.resultAck.info)) {
// 如果成功获取
// 当前的所有打印设备
allPrinters = JSON.parse(arrParse.resultAck.info);
// 所有名称
let allPrintersName = Object.keys(allPrinters);
// 所有对应值
let allPrintersValue = Object.values(allPrinters);
// 用于存储当前下拉框列表
this.options = [];
// 将其保存到数据中供前端展示
for (i = 0; i < allPrintersName.length; i++) {
// 设置新对象
let newopt = {};
// 设置标题
newopt.label = allPrintersName[i];
// 设置值
newopt.value = allPrintersValue[i];
// 添加对象
this.options.push(newopt)
}
// 选中打印机
// 选中打印机(默认选中第一个)
selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => {
// 设置sdk状态为true
initSdkStatus = true;
// 返回值规范化
var arrParse = JSON.parse(JSON.stringify(data));
if (!arrParse.resultAck.result) {
return;
// 如果失败
this.$alert('打印设备连接失败,请重试', '提示', {
confirmButtonText: '确定',
callback: action => {
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else if (isJSON(arrParse.resultAck.info)) {
//选择成功,打印机连接成功
console.log(data)

136
target/classes/templates/pages/JcPrinter/PrinterIndex.html

@ -9,6 +9,9 @@
<body>
<div id="app" class="container">
<input style="display:none;" id="materialQrCode" th:value="${qrCode}">
<input style="display:none;" id="materialCode" th:value="${mcode}">
<input style="display:none;" id="name" th:value="${name}">
<input style="display:none;" id="version" th:value="${version}">
<div class="title">
<H2>刷新</H2>
<div><el-button @click="initSdkApi()" type="primary">SDK初始化</el-button></div>
@ -46,6 +49,13 @@
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableQrCodeParam=true;isEditTag=false" type="primary">绘制二维码</el-button>
</div>
<div style="margin-bottom:20px;">
<el-button @click="dialogDrawLableNameTextParam=true;isEditTag=false" type="primary">名称绘制</el-button>
</div>
<div style="margin-bottom:20px;" v-show="versionInit">
<el-button @click="dialogDrawLableVersionTextParam=true;isEditTag=false" type="primary">型号绘制</el-button>
</div>
</div>
</el-col>
<el-col :span="10">
@ -87,7 +97,6 @@
<el-option label="连续纸" value="3"></el-option>
<el-option label="定孔纸" value="4"></el-option>
<el-option label="透明纸" value="5"></el-option>
<el-option label="标牌" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="打印份数">
@ -102,17 +111,18 @@
</div>
<div>
<el-button style="margin: 0 20px 20px 40px;" @click="startPrintJob(3)" type="primary">单页多份打印</el-button>
<el-button style="margin: 0 0 20px 0;" @click="startPrintJob(4)"type="primary">多页多份打印</el-button>
<el-button style="margin: 0 0 20px 0;" @click="startPrintJob(4)" type="primary">多页多份打印</el-button>
</div>
</el-col>
</el-row>
</div>
<!-- 弹出框-->
<el-dialog title="画布初始化" :visible.sync="dialogInitDrawingBoardParam">
<el-form :model="form">
<el-form-item label="画布宽度" :label-width="formLabelWidth">
<el-form-item label="宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.width" ></el-input>
</el-form-item>
<el-form-item label="画布高度" :label-width="formLabelWidth">
<el-form-item label="高度" :label-width="formLabelWidth">
<el-input type="number" v-model="InitDrawingBoardParam.height" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
@ -140,6 +150,12 @@
<el-form-item label="高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.height" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableBarCodeParam.y" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableBarCodeParam.rotate" placeholder="请选择旋转角度">
<el-option label="旋转0度" :value="0"></el-option>
@ -170,14 +186,11 @@
<el-form-item label="宽高" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.width" ></el-input>
</el-form-item>
<span style="color:red; padding-left:120px">此处不依据二维码类型校验二维码内容,可百度相关的条码类型输入符合要求的条码类型</span>
<el-form-item label="一维码类型" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.codeType" placeholder="请选择一维码类型">
<el-option label="QR_CODE" :value="31"></el-option>
<el-option label="PDF417" :value="32"></el-option>
<el-option label="DATA_MATRIX" :value="33"></el-option>
<el-option label="AZTEC" :value="34"></el-option>
</el-select>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableQrCodeParam.y" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableQrCodeParam.rotate" placeholder="请选择旋转角度">
@ -188,12 +201,109 @@
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableQrCodeParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableQrCodeApi()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制名称" :visible.sync="dialogDrawLableNameTextParam">
<el-form :model="form">
<el-form-item label="文本内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableNameTextParam.value" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.y" ></el-input>
</el-form-item>
<el-form-item label="文本宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.width" ></el-input>
</el-form-item>
<el-form-item label="文本高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.height" ></el-input>
</el-form-item>
<el-form-item label="字号" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.fontSize" ></el-input>
</el-form-item>
<el-form-item label="行距" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableNameTextParam.lineSpacing" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableNameTextParam.rotate" placeholder="请选择活动区域">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
<el-form-item label="对齐方式" :label-width="formLabelWidth">
<el-select v-model="DrawLableNameTextParam.textAlignHorizonral" placeholder="请选择活动区域">
<el-option label="居左" :value="0"></el-option>
<el-option label="居右" :value="1"></el-option>
<el-option label="居中" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字体样式" :label-width="formLabelWidth">
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[0]">加粗</el-checkbox>
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[1]">斜体</el-checkbox>
<el-checkbox v-model="DrawLableNameTextParam.fontStyle[2]">下划线</el-checkbox>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableNameTextParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableNameTextApi()">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="绘制型号" :visible.sync="dialogDrawLableVersionTextParam">
<el-form :model="form">
<el-form-item label="文本内容" :label-width="formLabelWidth">
<el-input v-model="DrawLableVersionTextParam.value" ></el-input>
</el-form-item>
<el-form-item label="X轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.x" ></el-input>
</el-form-item>
<el-form-item label="Y轴坐标" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.y" ></el-input>
</el-form-item>
<el-form-item label="文本宽度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.width" ></el-input>
</el-form-item>
<el-form-item label="文本高度" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.height" ></el-input>
</el-form-item>
<el-form-item label="字号" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.fontSize" ></el-input>
</el-form-item>
<el-form-item label="行距" :label-width="formLabelWidth">
<el-input type="number" v-model="DrawLableVersionTextParam.lineSpacing" ></el-input>
</el-form-item>
<el-form-item label="旋转角度" :label-width="formLabelWidth">
<el-select v-model="DrawLableVersionTextParam.rotate" placeholder="请选择活动区域">
<el-option label="旋转0度" :value="0"></el-option>
<el-option label="旋转90度" :value="90"></el-option>
<el-option label="旋转180度" :value="180"></el-option>
<el-option label="旋转270度" :value="270"></el-option>
</el-select>
</el-form-item>
<el-form-item label="对齐方式" :label-width="formLabelWidth">
<el-select v-model="DrawLableVersionTextParam.textAlignHorizonral" placeholder="请选择活动区域">
<el-option label="居左" :value="0"></el-option>
<el-option label="居右" :value="1"></el-option>
<el-option label="居中" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="字体样式" :label-width="formLabelWidth">
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[0]">加粗</el-checkbox>
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[1]">斜体</el-checkbox>
<el-checkbox v-model="DrawLableVersionTextParam.fontStyle[2]">下划线</el-checkbox>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDrawLableVersionTextParam = false">取 消</el-button>
<el-button type="primary" @click="DrawLableVersionTextApi()">确 定</el-button>
</div>
</el-dialog>
</div>
<script src="/static/js/vue/vue.js"></script>

11
target/classes/templates/pages/material/material-out.html

@ -165,7 +165,7 @@
{field: 'shelfLife', width: 150, title: '保质期'},
{field: 'productionPlace', width: 150, title: '产地'},
{field: 'remark', width: 150, title: '备注'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'},
{field: 'state', title: '状态', minWidth: 100, templet: '#switchTpl'},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]
],
@ -173,9 +173,6 @@
limit: 10,
page: true,
skin: 'line',
done: function () {
}
});
@ -191,13 +188,13 @@
if (data.brand !== '') {
req.brand = data.brand;
}
if (data.materialTypeId != '') {
if (data.materialTypeId !== '') {
req.materialTypeId = data.materialTypeId;
}
if (data.state != '') {
if (data.state !== '') {
req.state = data.state;
}
if (data.code != '') {
if (data.code !== '') {
req.code = data.code
}

216
target/classes/templates/pages/materialtype/materialTypeByParentId.html

@ -50,6 +50,11 @@
</div>
</fieldset>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="state" value="{{d.oldId}}" lay-skin="switch" lay-text="启用|禁用"
lay-filter="changeState" {{ d.state== 1 ? 'checked' : '' }} >
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
@ -105,15 +110,7 @@
{type: "checkbox", width: 50},
{field: 'tname', width: 120, title: '类型名称', sort: true},
{field: 'introduce', width: 200, title: '类型介绍', sort: true},
{
field: 'state', title: '状态', minWidth: 80, sort: true, templet: function (d) {
if (d.state == 1) {
return "启用";
} else if (d.state == 2) {
return "禁用";
}
}
},
{title: '状态', width: 100, templet: '#switchTpl', align: "center"},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
]
],
@ -169,38 +166,45 @@
var req = {};
req.ids = [];
for (i = 0, len = data.length; i < len; i++) {
req.ids[i] = data[i].id;
req.ids[i] = data[i].oldId;
}
$.ajax({
url: '/materialType/materialType_del',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
if (req.ids.length > 0) {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/materialType/materialType_del',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
//执行搜索重载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
} else {
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
//执行搜索重载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
}
}, 'data');
return false;
}
}, 'data');
return false;
}
}
})
}
})
})
} else {
layer.msg("未选中记录,请确认!");
return false;
}
}
});
@ -220,7 +224,7 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/materialType_detail?id=' + data.id,
content: '/materialType_detail?id=' + data.oldId,
});
$(window).on("resize", function () {
layer.full(index);
@ -228,7 +232,7 @@
return false;
} else if (obj.event === 'delete') {
var req = {};
req.id = data.id;
req.id = data.oldId;
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/materialType/materialType_del',
@ -256,6 +260,138 @@
});
}
});
//监听状态操作
form.on('switch(changeState)', function (obj) {
var req = new Map;
if (obj.elem.checked) {
req["state"] = 1;
}
req["id"] = this.value;
var hasMaterial = false;
if (req["state"] == undefined) { //如果禁用
$.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (data) {
hasMaterial = data.data;
if (hasMaterial) { // 如果有物品
layer.confirm('该种类下还有物品,确定禁用?', {
btn: ['禁用', '取消'] //按钮
}, function () {
$.ajax({
url: "/materialType/EditMaterialTypeState", // 禁用
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}, function () {
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
});
} else { // 如果没有物品
$.ajax({
url: "/materialType/EditMaterialTypeState",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
// 执行表格重加载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}
}
})
} else { // 如果启用
$.ajax({
url: "/materialType/EditMaterialTypeState",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
} else {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
// 执行表格重加载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
}
}
})
}
});
});
</script>

8
target/classes/templates/pages/materialtype/materialType_view.html

@ -120,11 +120,11 @@
{type: "checkbox", width: 50},
{field: 'tname', width: 120, title: '类型名称'},
{field: 'introduce', width: 200, title: '类型介绍'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'},
{title: '状态', width: 100, templet: '#switchTpl', align: "center"},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]
],
limits: [10, 15, 20, 25, 50,100],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
@ -140,7 +140,7 @@
if (data.tname !== '') {
req.tname = data.tname;
}
if (data.state != '') {
if (data.state !== '') {
req.state = data.state;
}
req.parentId = parentId;
@ -271,7 +271,7 @@
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
console.log(data)
if (obj.event === 'detail') {
req = {};
req.parentId = parentId;

Loading…
Cancel
Save