Przeglądaj źródła

Signed-off-by: 李妹妹 <1639016684@qq.com>

李妹妹 1 tydzień temu
rodzic
commit
18826f7d43
100 zmienionych plików z 8326 dodań i 2703 usunięć
  1. 3 3
      api/activity.js
  2. 9 9
      api/address.js
  3. 1 1
      api/adv.js
  4. 5 5
      api/article.js
  5. 8 8
      api/common.js
  6. 10 8
      api/companyOrder.js
  7. 245 21
      api/companyUser.js
  8. 6 6
      api/coupon.js
  9. 1 1
      api/department.js
  10. 2 2
      api/disease.js
  11. 10 10
      api/doc.js
  12. 2 2
      api/doctorArticle.js
  13. 11 11
      api/doctorOrder.js
  14. 76 3
      api/health.js
  15. 84 0
      api/healthUser.js
  16. 18 18
      api/index.js
  17. 5 5
      api/patient.js
  18. 13 2
      api/payment.js
  19. 2 2
      api/prescribe.js
  20. 13 15
      api/product.js
  21. 8 2
      api/store.js
  22. 6 6
      api/storeAfterSales.js
  23. 23 23
      api/storeOrder.js
  24. 2 2
      api/storeProductPackage.js
  25. 6 6
      api/test.js
  26. 17 18
      api/user.js
  27. 3 3
      api/userSign.js
  28. 5 3
      common/request.js
  29. 7 8
      components/pushangyuqi-calendar/pushangyuqi-calendar.vue
  30. 0 181
      components/tuiProduct.vue
  31. 361 0
      components/w-drag-sorts/w-drag-sorts.vue
  32. 1 1
      manifest.json
  33. 246 42
      pages.json
  34. 1 0
      pages/auth/login.vue
  35. 1 1
      pages/common/launch.vue
  36. 1 1
      pages/home/components/NewProduct.vue
  37. 8 9
      pages/home/index.vue
  38. 1 1
      pages/home/new/articleList.vue
  39. 2 2
      pages/home/new/chineseMedicineDetails.vue
  40. 2 2
      pages/home/new/diseaseDetails.vue
  41. 1 1
      pages/home/new/diseaseList.vue
  42. 2 2
      pages/home/new/famousPrescribeDetails.vue
  43. 2 2
      pages/home/new/medicatedFoodDetails.vue
  44. 1 1
      pages/home/new/medicatedFoodList.vue
  45. 2 2
      pages/home/new/questionsDetails.vue
  46. 1 1
      pages/home/new/questionsList.vue
  47. 2 2
      pages/home/new/test.vue
  48. 3 3
      pages/home/new/testDetails.vue
  49. 4 4
      pages/home/new/testList.vue
  50. 1 1
      pages/home/new/testResult.vue
  51. 2 2
      pages/home/new/vesselDetails.vue
  52. 1 1
      pages/home/productList.vue
  53. 2 2
      pages/shopping/confirmCreateOrder.vue
  54. 2 2
      pages/shopping/confirmOrder.vue
  55. 2 2
      pages/shopping/confirmPackageOrder.vue
  56. 1 1
      pages/shopping/paymentOrder.vue
  57. 1 1
      pages/shopping/prescribe.vue
  58. 25 22
      pages/shopping/productDetails.vue
  59. 158 73
      pages/user/index.vue
  60. 391 0
      pages_company/addCompetitors.vue
  61. 620 0
      pages_company/addDoc.vue
  62. 110 102
      pages_company/addServe.vue
  63. 733 0
      pages_company/addUser.vue
  64. 171 87
      pages_company/buyOrder.vue
  65. 82 40
      pages_company/clientDetail.vue
  66. 178 69
      pages_company/clientList.vue
  67. 522 0
      pages_company/complaintDetail.vue
  68. 362 0
      pages_company/complaintList.vue
  69. 393 0
      pages_company/doc.vue
  70. 54 86
      pages_company/executionRecord.vue
  71. 68 35
      pages_company/index.vue
  72. 2 2
      pages_company/order/confirmCompanyOrder.vue
  73. 1 1
      pages_company/order/productDetails.vue
  74. 1 0
      pages_company/returnRecord.vue
  75. 2 1
      pages_company/testRecord.vue
  76. 540 0
      pages_company/todoDetail.vue
  77. 51 63
      pages_company/todoList.vue
  78. 2 2
      pages_doctor/index.vue
  79. 203 114
      pages_echarts/acid.vue
  80. 171 8
      pages_echarts/acidDetail.vue
  81. 60 95
      pages_echarts/acidList.vue
  82. 106 40
      pages_echarts/bloodPressure.vue
  83. 126 39
      pages_echarts/bloodPressureDetail.vue
  84. 60 95
      pages_echarts/bloodPressureList.vue
  85. 122 44
      pages_echarts/bloodSugar.vue
  86. 150 8
      pages_echarts/bloodSugarDetail.vue
  87. 85 120
      pages_echarts/bloodSugarList.vue
  88. 22 4
      pages_echarts/components/dateTimePicker/dateTimePicker.vue
  89. 7 3
      pages_echarts/components/simpleScale/simpleScale.vue
  90. 133 30
      pages_echarts/hips.vue
  91. 157 16
      pages_echarts/hipsDetail.vue
  92. 85 120
      pages_echarts/hipsList.vue
  93. 141 26
      pages_echarts/waistLine.vue
  94. 155 16
      pages_echarts/waistLineDetail.vue
  95. 85 120
      pages_echarts/waistLineList.vue
  96. 91 6
      pages_health/ConsultationDetails.vue
  97. 34 61
      pages_health/addCompetitors.vue
  98. 309 182
      pages_health/addDoc.vue
  99. 303 180
      pages_health/addUser.vue
  100. 0 320
      pages_health/doc.vue

+ 3 - 3
api/activity.js

@@ -4,13 +4,13 @@ let request = new Request().http
  
  
  export function getStoreActivity(data) {
- 	 return request('/app/activity/getStoreActivity',data,'GET');
+ 	 return request('/store/app/activity/getStoreActivity',data,'GET');
  }
  export function getStoreActivityDetails(data) {
- 	 return request('/app/activity/getStoreActivityDetails',data,'GET');
+ 	 return request('/store/app/activity/getStoreActivityDetails',data,'GET');
  }
  export function share(activityId) {
- 	 return request('/app/activity/share?activityId='+activityId,null,'POST');
+ 	 return request('/store/app/activity/share?activityId='+activityId,null,'POST');
  }
   
  

+ 9 - 9
api/address.js

@@ -2,36 +2,36 @@ import Request from '../common/request.js';
 let request = new Request().http
 
  export function getCity() {
- 	 return request('/app/address/getCity',null,'GET');
+ 	 return request('/store/app/address/getCity',null,'GET');
  }
  export function getCitys() {
- 	 return request('/app/address/getCitys',null,'GET');
+ 	 return request('/store/app/address/getCitys',null,'GET');
  }
  export function getAddressList() {
- 	 return request('/app/address/getAddressList',null,'GET');
+ 	 return request('/store/app/address/getAddressList',null,'GET');
  }
 
  export function getAddressById(data) {
- 	 return request('/app/address/getAddressById',data,'GET');
+ 	 return request('/store/app/address/getAddressById',data,'GET');
  } 
  
  export function addAddress(data) {
- 	return request('/app/address/addAddress',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/address/addAddress',data,'POST','application/json;charset=UTF-8');
  }
 
  export function editAddress(data) {
- 	return request('/app/address/editAddress',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/address/editAddress',data,'POST','application/json;charset=UTF-8');
  }
  export function delAddress(data) {
- 	return request('/app/address/delAddress',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/address/delAddress',data,'POST','application/json;charset=UTF-8');
  }
  
  export function parseAddress(data) {
- 	return request('/app/address/parseAddress',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/address/parseAddress',data,'POST','application/json;charset=UTF-8');
  }
  
  export function delAllAddress(data) {
- 	return request('/app/address/delAllAddress',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/address/delAllAddress',data,'POST','application/json;charset=UTF-8');
  }
  
  

+ 1 - 1
api/adv.js

@@ -1,6 +1,6 @@
 import Request from '../common/request.js';
 let request = new Request().http
  export function getAdv(data) {
- 	 return request('/app/adv/getAdv',data,'GET');
+ 	 return request('/store/app/adv/getAdv',data,'GET');
  }
  

+ 5 - 5
api/article.js

@@ -3,23 +3,23 @@ let request = new Request().http
 
  
  export function getArticleCate() {
- 	 return request('/app/article/getArticleCate',null,'GET');
+ 	 return request('/store/app/article/getArticleCate',null,'GET');
  }
  
  export function getArticleList(data) {
- 	 return request('/app/article/getArticleList',data,'GET');
+ 	 return request('/store/app/article/getArticleList',data,'GET');
  }
 
  export function getArticleByArticleId(data) {
- 	 return request('/app/article/getArticleByArticleId',data,'GET');
+ 	 return request('/store/app/article/getArticleByArticleId',data,'GET');
  } 
  
  export function updateView(articleId) {
- 	 return request('/app/article/updateView?articleId='+articleId,null,'POST');
+ 	 return request('/store/app/article/updateView?articleId='+articleId,null,'POST');
  } 
  
  export function getArticleViewList(data) {
- 	 return request('/app/article/getArticleViewList',data,'GET');
+ 	 return request('/store/app/article/getArticleViewList',data,'GET');
  } 
  
 

+ 8 - 8
api/common.js

@@ -3,33 +3,33 @@ let request = new Request().http
 
 
  export function uploadOSS(data) {
- 	 return request('/app/common/uploadOSS',data,'POST');
+ 	 return request('/store/app/common/uploadOSS',data,'POST');
  }
  export function getTlsSig(data) {
- 	 return request('/app/common/getTlsSig',data,'GET');
+ 	 return request('/store/app/common/getTlsSig',data,'GET');
  }
  
  export function getStoreConfig() {
-  	 return request('/app/common/getStoreConfig',null,'GET');
+  	 return request('/store/app/common/getStoreConfig',null,'GET');
  } 
  
  export function getProductConfig() {
-  	 return request('/app/common/getProductConfig',null,'GET');
+  	 return request('/store/app/common/getProductConfig',null,'GET');
  } 
  
  export function getWeixinTemps() {
- 	 return request('/app/common/getWeixinTemps',null,'GET');
+ 	 return request('/store/app/common/getWeixinTemps',null,'GET');
  }
  export function getWeixinOrderTemps() {
- 	 return request('/app/common/getWeixinOrderTemps',null,'GET');
+ 	 return request('/store/app/common/getWeixinOrderTemps',null,'GET');
  }
  export function getWeixinPrescribeTemps() {
- 	 return request('/app/common/getWeixinPrescribeTemps',null,'GET');
+ 	 return request('/store/app/common/getWeixinPrescribeTemps',null,'GET');
  }
  
  
  export function getDictByKey(data) {
-  	 return request('/app/common/getDictByKey',data,'GET');
+  	 return request('/store/app/common/getDictByKey',data,'GET');
  } 
  
  

+ 10 - 8
api/companyOrder.js

@@ -2,33 +2,35 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function getSalesProducts(data) {
- 	 return request('/app/companyOrder/getSalesProducts',data,'GET');
+ 	 return request('/store/app/companyOrder/getSalesProducts',data,'GET');
  }
  
  export function createSalesOrder(data) {
- 	 return request('/app/companyOrder/createSalesOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/companyOrder/createSalesOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function updateSalseOrderMoney(data) {
- 	 return request('/app/companyOrder/updateSalseOrderMoney',data,'GET' );
+ 	 return request('/store/app/companyOrder/updateSalseOrderMoney',data,'GET' );
  }
  // 多店铺修改实付金额
  export function updateSaleOrderMoney(data) {
- 	 return request('/app/companyOrder/updateSaleOrderMoney',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/companyOrder/updateSaleOrderMoney',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getSalesOrder(data) {
- 	 return request('/app/companyOrder/getSalesOrder',data,'GET' );
+ 	 return request('/store/app/companyOrder/getSalesOrder',data,'GET' );
  }
  export function getSalesOrders(data) {
- 	 return request('/app/companyOrder/getSalesOrders',data,'GET' );
+ 	 return request('/store/app/companyOrder/getSalesOrders',data,'GET' );
  }
  export function addUserCart(data) {
- 	 return request('/app/companyOrder/addUserCart',data,'GET' );
+ 	 return request('/store/app/companyOrder/addUserCart',data,'GET' );
  }
  
  export function editOrderMoney(data) {
- 	 return request('/app/companyOrder/editOrderMoney',data,'GET' );
+ 	 return request('/store/app/companyOrder/editOrderMoney',data,'GET' );
  }
+
+ 
  
   
  

+ 245 - 21
api/companyUser.js

@@ -1,23 +1,247 @@
 import Request from '../common/request.js';
 let request = new Request().http
- 
- export function login(data) {
- 	 return request('/app/companyUser/login',data,'POST','application/json;charset=UTF-8');
- }
- 
- export function getUserInfo(data) {
- 	 return request('/app/companyUser/getUserInfo',data,'GET','application/json;charset=UTF-8');
- }
- export function getQrImg(data) {
- 	 return request('/app/companyUser/getQrImg',data,'GET','application/json;charset=UTF-8');
- }
- 
- export function getCompanyUserCard(data) {
- 	 return request('/app/companyUser/getCompanyUserCard',data,'GET','application/json;charset=UTF-8');
- }
- 
- 
- 
-  
- 
- 
+
+export function login(data) {
+	return request('/store/app/companyUser/login', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+export function getUserInfo(data) {
+	return request('/store/app/companyUser/getUserInfo', data, 'GET', 'application/json;charset=UTF-8');
+}
+export function getQrImg(data) {
+	return request('/store/app/companyUser/getQrImg', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+export function getCompanyUserCard(data) {
+	return request('/store/app/companyUser/getCompanyUserCard', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//获取所有投诉类型
+export function getCategory(data) {
+	return request('/app/complaint/category', data, 'GET', 'application/json;charset=UTF-8');
+}
+//提交投诉
+export function submitComplaint(data) {
+	return request('/app/complaint/submitComplaint', data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取投诉列表
+export function getComplaintList(data) {
+	return request('/app/complaint/list', data, 'POST', 'application/json;charset=UTF-8');
+}
+//修改i投诉
+export function updateComplaint(id, data) {
+	return request('/app/complaint/' + id, data, 'PUT', 'application/json;charset=UTF-8');
+}
+//投诉详情
+export function getComplaintById(data) {
+	return request('/app/complaint/' + data, data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//管理
+export function getAdmin(data) {
+	return request('/app/food-record/admin/list', data, 'GET', 'application/json;charset=UTF-8');
+}
+//某日饮食列表
+export function getDayRecords(data) {
+	return request('/app/food-record/getDayRecords', data, 'GET', 'application/json;charset=UTF-8');
+}
+//饮食列表
+export function getMyRecordList(data) {
+	return request('/app/food-record/getMyRecordList', data, 'POST', 'application/json;charset=UTF-8');
+}
+//新增饮食
+export function addRecord(data) {
+	return request('/app/food-record/addRecord', data, 'POST', 'application/json;charset=UTF-8');
+}
+//修改饮食
+export function editRecord(data) {
+	return request('/app/food-record/editRecord', data, 'POST', 'application/json;charset=UTF-8');
+}
+//删除饮食
+export function deleteRecord(data) {
+	return request('/app/food-record/deleteRecord/' + data, data, 'POST', 'application/json;charset=UTF-8');
+}
+//饮食详情
+export function getRecordInfo(data) {
+	return request('/app/food-record/getRecordInfo/' + data, data, 'GET');
+}
+//待办列表
+export function getToDoList(data) {
+	return request('/app/todoItems/listPage', data, 'POST', 'application/json;charset=UTF-8');
+}
+//待办事项详情
+export function getFindById(data) {
+	return request('/app/todoItems/findById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//更新详情
+export function updateById(data) {
+	return request('/app/todoItems/updateById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//商品列表
+export function getServiceList(data) {
+	return request('/app/serviceGoods/listPage', data, 'POST', 'application/json;charset=UTF-8');
+}
+//商品详情
+export function getServiceById(data) {
+	return request('/app/serviceGoods/findById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//新增商品
+export function saveService(data) {
+	return request('/app/serviceGoods/save', data, 'POST', 'application/json;charset=UTF-8');
+}
+//更新商品信息
+export function updateService(data) {
+	return request('/app/serviceGoods/updateById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//删除商品
+export function deleteService(data) {
+	return request('/app/serviceGoods/deleteById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//竞品列表
+export function getCompetitorList(data) {
+	return request('/app/competitorInfo/listPage', data, 'POST', 'application/json;charset=UTF-8');
+}
+//竞品详情
+export function getCompetitorById(data) {
+	return request('/app/competitorInfo/findById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//竞品商品
+export function saveCompetitor(data) {
+	return request('/app/competitorInfo/save', data, 'POST', 'application/json;charset=UTF-8');
+}
+//更新竞品信息
+export function updateCompetitor(data) {
+	return request('/app/competitorInfo/updateById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//删除竞品
+export function deleteCompetitor(data) {
+	return request('/app/competitorInfo/deleteById', data, 'POST', 'application/json;charset=UTF-8');
+}
+//新增体检报告
+export function addReport(data) {
+	return request('/app/medical/report/add', data, 'POST', 'application/json;charset=UTF-8');
+}
+//用户ID查询体检报告信息
+export function getByUserAndDate(data) {
+	return request('/app/medical/report/getByUserAndDate', data, 'GET', 'application/json;charset=UTF-8');
+}
+//用户查询体检报告列表
+export function getUserReportList(data) {
+	return request('/app/medical/report/listByUser/' + data, data, 'GET', 'application/json;charset=UTF-8');
+}
+//查询体检报告列表
+export function getReportList(data) {
+	return request('/app/medical/report/page', data, 'GET', 'application/json;charset=UTF-8');
+}
+//查询体检报告详情
+export function getReportById(data) {
+	return request('/app/medical/report/' + data, data, 'GET', 'application/json;charset=UTF-8');
+}
+//删除体检报告
+export function deleteReport(data) {
+	return request('/app/medical/report/' + data, data, 'DELETE', 'application/json;charset=UTF-8');
+}
+//更新体检报告
+export function updateReport(data) {
+	return request('/app/medical/report/update', data, 'PUT', 'application/json;charset=UTF-8');
+}
+//对比报告
+export function compareReport(data) {
+	return request('/app/medical/report/compareReport', data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取指定报告的指标分类
+export function getAllCateByReportId(data) {
+	return request('/app/medical/result/getAllCateByReportId', data, 'GET', 'application/json;charset=UTF-8');
+}
+//新增指标
+export function addIndicator(data) {
+	return request('/app/medical/indicator/add', data, 'POST', 'application/json;charset=UTF-8');
+}
+//根据分类查询指标
+export function listByCategory(data) {
+	return request('/app/medical/indicator/listByCategory', data, 'GET', 'application/json;charset=UTF-8');
+}
+//查询所有启用的指标
+export function listEnabled(data) {
+	return request('/app/medical/indicator/listEnabled', data, 'GET', 'application/json;charset=UTF-8');
+}
+//过滤所有启用的指标
+export function listAllEnabledByReportId(data) {
+	return request('/app/medical/indicator/listAllEnabledByReportId', data, 'GET', 'application/json;charset=UTF-8');
+}
+//分页查询医疗指标列表
+export function getPage(data) {
+	return request('/app/medical/indicator/page', data, 'GET', 'application/json;charset=UTF-8');
+}
+//更新指标
+export function updateIndicator(data) {
+	return request('/app/medical/indicator/update', data, 'PUT', 'application/json;charset=UTF-8');
+}
+//根据ID查询指标详情
+export function getIndicatorById(data) {
+	return request('/app/medical/indicator/'+ data, data, 'GET', 'application/json;charset=UTF-8');
+}
+//删除指标
+export function deleteIndicator(data) {
+	return request('/app/medical/indicator/' + data, data, 'DELETE', 'application/json;charset=UTF-8');
+}
+
+//新增检查结果
+export function addResult(data) {
+	return request('/app/medical/result/add', data, 'POST', 'application/json;charset=UTF-8');
+}
+//批量新增检查结果
+export function addBatchAdd(data) {
+	return request('/app/medical/result/batchAdd', data, 'POST', 'application/json;charset=UTF-8');
+}
+//批量更新检查结果
+export function updateBatch(data) {
+	return request('/app/medical/result/updateBatch', data, 'POST', 'application/json;charset=UTF-8');
+}
+//根据指标ID查询所有结果
+export function listByIndicator(data) {
+	return request('/app/medical/result/listByIndicator/'+ data, data, 'GET');
+}
+//根据ID查询所有结果
+export function listByReport(data) {
+	return request('/app/medical/result/listByReport/'+ data, data, 'GET');
+}
+//分页查询报告指标检查结果列表
+export function getResult(data) {
+	return request('/app/medical/result/page', data, 'GET');
+}
+//更新检查结果
+export function updateResult(data) {
+	return request('/app/medical/result/update', data, 'PUT', 'application/json;charset=UTF-8');
+}
+//查询检查结果详情
+export function getResultById(data) {
+	return request('/app/medical/result/'+ data, data, 'GET');
+}
+//删除检查结果
+export function deleteResult(data) {
+	return request('/app/medical/result/'+ data, data, 'DELETE');
+}
+
+//查询所有单位
+export function getListAll(data) {
+	return request('/app/medical/unit/listAll', data, 'GET');
+}
+//新建附件
+export function addAttachment(data) {
+	return request('/app/attachment', data, 'POST', 'application/json;charset=UTF-8');
+}
+//查询附件
+export function getAttachment(data) {
+	return request('/app/attachment/list', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//删除附件
+export function deleteAttachment(data) {
+	return request('/app/attachment/'+data, data, 'DELETE');
+}
+
+//工作完成百分比
+export function queryCateStatis(data) {
+	return request('/app/todoItems/queryCateStatis', data, 'GET');
+}

+ 6 - 6
api/coupon.js

@@ -2,26 +2,26 @@ import Request from '../common/request.js';
 let request = new Request().http
 
  export function getCouponIssueList(data) {
- 	 return request('/app/coupon/getCouponIssueList',data,'GET');
+ 	 return request('/store/app/coupon/getCouponIssueList',data,'GET');
  }
  export function getCompanyCouponIssueList(data) {
- 	 return request('/app/coupon/getCompanyCouponIssueList',data,'GET');
+ 	 return request('/store/app/coupon/getCompanyCouponIssueList',data,'GET');
  }
  export function getCouponIssueById(data) {
- 	 return request('/app/coupon/getCouponIssueById',data,'GET');
+ 	 return request('/store/app/coupon/getCouponIssueById',data,'GET');
  }
  
  
  
  export function receive(data) {
- 	return request('/app/coupon/receive',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/coupon/receive',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getMyCouponList(data) {
- 	 return request('/app/coupon/getMyCouponList',data,'GET');
+ 	 return request('/store/app/coupon/getMyCouponList',data,'GET');
  }
  export function getMyEnableCouponList(data) {
- 	 return request('/app/coupon/getMyEnableCouponList',data,'GET');
+ 	 return request('/store/app/coupon/getMyEnableCouponList',data,'GET');
  }
  
  

+ 1 - 1
api/department.js

@@ -2,7 +2,7 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function getDepartmentList(data) {
- 	 return request('/app/department/getDepartmentList',data,'GET');
+ 	 return request('/store/app/department/getDepartmentList',data,'GET');
  }
  
   

+ 2 - 2
api/disease.js

@@ -2,10 +2,10 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function getDiseaseList(data) {
- 	 return request('/app/disease/getDiseaseList',data,'GET');
+ 	 return request('/store/app/disease/getDiseaseList',data,'GET');
  }
  export function getDiseaseById(data) {
- 	 return request('/app/disease/getDiseaseById',data,'GET');
+ 	 return request('/store/app/disease/getDiseaseById',data,'GET');
  }
  
  

+ 10 - 10
api/doc.js

@@ -3,43 +3,43 @@ let request = new Request().http
 
  
  export function getMyDocList(data) {
- 	 return request('/app/doc/getMyDocList',data,'GET');
+ 	 return request('/store/app/doc/getMyDocList',data,'GET');
  }
  
  export function getDocDetails(data) {
- 	 return request('/app/doc/getDocDetails',data,'GET');
+ 	 return request('/store/app/doc/getDocDetails',data,'GET');
  }
  
  export function addDoc(data) {
- 	return request('/app/doc/addDoc',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/doc/addDoc',data,'POST','application/json;charset=UTF-8');
  }
  
  export function editDoc(data) {
- 	return request('/app/doc/editDoc',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/doc/editDoc',data,'POST','application/json;charset=UTF-8');
  }
  export function delDoc(data) {
- 	return request('/app/doc/delDoc',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/doc/delDoc',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getMyDocRecordList(data) {
- 	 return request('/app/doc/getMyDocRecordList',data,'GET');
+ 	 return request('/store/app/doc/getMyDocRecordList',data,'GET');
  }
  
  export function getDocRecordReplyList(data) {
- 	 return request('/app/doc/getDocRecordReplyList',data,'GET');
+ 	 return request('/store/app/doc/getDocRecordReplyList',data,'GET');
  }
  
  
  export function addDocRecord(data) {
- 	return request('/app/doc/addDocRecord',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/doc/addDocRecord',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getMyDocOrderList() {
- 	 return request('/app/doc/getMyDocOrderList',null,'GET');
+ 	 return request('/store/app/doc/getMyDocOrderList',null,'GET');
  }
  
  export function addDocOrder(data) {
- 	return request('/app/doc/addDocOrder',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/doc/addDocOrder',data,'POST','application/json;charset=UTF-8');
  }
  
  

+ 2 - 2
api/doctorArticle.js

@@ -2,10 +2,10 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function getDoctorArticleList(data) {
- 	 return request('/app/doctorArticle/getDoctorArticleList',data,'GET');
+ 	 return request('/store/app/doctorArticle/getDoctorArticleList',data,'GET');
  }
  export function getDoctorArticleById(data) {
- 	 return request('/app/doctorArticle/getDoctorArticleById',data,'GET');
+ 	 return request('/store/app/doctorArticle/getDoctorArticleById',data,'GET');
  }
   
    

+ 11 - 11
api/doctorOrder.js

@@ -5,43 +5,43 @@ let request = new Request().http
  
  
  export function getDepartmentList(data) {
- 	 return request('/app/doctorOrder/getDepartmentList',data,'GET');
+ 	 return request('/store/app/doctorOrder/getDepartmentList',data,'GET');
  } 
  
  export function getDoctorList(data) {
- 	 return request('/app/doctorOrder/getDoctorList',data,'GET');
+ 	 return request('/store/app/doctorOrder/getDoctorList',data,'GET');
  } 
  
  export function getDoctorCase(data) {
- 	 return request('/app/doctorOrder/getDoctorCase',data,'GET');
+ 	 return request('/store/app/doctorOrder/getDoctorCase',data,'GET');
  } 
  
  
  export function getMyDoctorOrderList(data) {
- 	 return request('/app/doctorOrder/getMyDoctorOrderList',data,'GET');
+ 	 return request('/store/app/doctorOrder/getMyDoctorOrderList',data,'GET');
  } 
  
  export function getDoctorDetail(data) {
- 	 return request('/app/doctorOrder/getDoctorDetail',data,'GET');
+ 	 return request('/store/app/doctorOrder/getDoctorDetail',data,'GET');
  } 
  
  export function getDoctorOrderDetail(data) {
- 	 return request('/app/doctorOrder/getDoctorOrderDetail',data,'GET');
+ 	 return request('/store/app/doctorOrder/getDoctorOrderDetail',data,'GET');
  } 
  export function create(data) {
- 	 return request('/app/doctorOrder/create',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/doctorOrder/create',data,'POST','application/json;charset=UTF-8');
  }
  export function pay(data) {
- 	 return request('/app/doctorOrder/pay',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/doctorOrder/pay',data,'POST','application/json;charset=UTF-8');
  }
  export function cancelOrder(data) {
- 	 return request('/app/doctorOrder/cancelOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/doctorOrder/cancelOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function pingOrder(data) {
- 	 return request('/app/doctorOrder/pingOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/doctorOrder/pingOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function getImOrderDetail(data) {
- 	 return request('/app/doctorOrder/getImOrderDetail',data,'GET');
+ 	 return request('/store/app/doctorOrder/getImOrderDetail',data,'GET');
  } 
  
  

+ 76 - 3
api/health.js

@@ -3,9 +3,82 @@ let request = new Request().http
 
 //获取咨询人员列表
 export function getuserlist(data) {
- 	 return request('/app/common/getDicts',data,'GET');
-} 
+	return request('/store/app/common/getDicts', data, 'GET');
+}
 //提交咨询内容
 export function submitconsult(data) {
- 	 return request('/app/common/getDicts',data,'GET');
+	return request('/store/app/common/getDicts', data, 'GET');
+}
+//获取用户列表
+export function getInfoList(data) {
+	return request('/companyapp/app/fs/userinfo/list', data, 'GET');
+}
+
+//获取用户基本信息
+export function getInfo(data) {
+	return request('/companyapp/app/fs/userinfo/info', data, 'GET');
+}
+
+//添加用户基本信息
+export function addInfo(data) {
+	return request('/companyapp/app/fs/userinfo/add', data, 'POST','application/json;charset=UTF-8');
+}
+
+//修改用户基本信息
+export function updateInfo(data) {
+	return request('/companyapp/app/fs/userinfo/update', data, 'POST','application/json;charset=UTF-8');
+}
+//删除用户基本信息
+export function deleteInfo(data) {
+	return request('/companyapp/app/fs/userinfo/delete', data, 'GET','application/json;charset=UTF-8');
+}
+//获取会员分类
+export function getMember(data) {
+	return request('/companyapp/app/common/getDictByKey?key=user_member_classify', data, 'GET');
+}
+//主页信息
+export function homeInfo(data) {
+	return request('/companyapp/app/fs/health/profile/home/info', data, 'GET');
+}
+//健康档案主页信息
+export function getDoc(data) {
+	return request('/companyapp/app/fs/health/profile/info', data, 'GET');
+}
+//添加健康档案信息
+export function addDoc(data) {
+	return request('/companyapp/app/fs/health/profile/add', data, 'POST','application/json;charset=UTF-8');
+}
+
+//修改健康档案信息
+export function updateDoc(data) {
+	return request('/companyapp/app/fs/health/profile/update', data, 'POST','application/json;charset=UTF-8');
+}
+//删除健康档案信息
+export function deleteDoc(data) {
+	return request('/companyapp/app/fs/health/profile/delete', data, 'GET','application/json;charset=UTF-8');
+}
+
+//最新数据查询
+export function getLatest(data) {
+	return request('/companyapp/app/fs/health/data/latest/info', data, 'GET','application/json;charset=UTF-8');
+}
+//数据新增
+export function addData(data) {
+	return request('/companyapp/app/fs/health/data/add', data, 'POST','application/json;charset=UTF-8');
+}
+//数据列表查询
+export function getDataList(data) {
+	return request('/companyapp/app/fs/health/data/list', data, 'GET','application/json;charset=UTF-8');
+}
+//数据更新
+export function updateData(data) {
+	return request('/companyapp/app/fs/health/data/update', data, 'POST','application/json;charset=UTF-8');
+}
+//数据数据删除
+export function deleteData(data) {
+	return request('/companyapp/app/fs/health/data/delete', data, 'GET','application/json;charset=UTF-8');
+}
+//数据数据详情
+export function getDataById(data) {
+	return request('/companyapp/app/fs/health/data/info', data, 'GET','application/json;charset=UTF-8');
 }

+ 84 - 0
api/healthUser.js

@@ -0,0 +1,84 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+//获取咨询人员列表
+export function getuserlist(data) {
+	return request('/store/app/common/getDicts', data, 'GET');
+}
+//提交咨询内容
+export function submitconsult(data) {
+	return request('/store/app/common/getDicts', data, 'GET');
+}
+
+//获取用户基本信息
+export function getInfo(data) {
+	return request('/app/fs/userinfo/info', data, 'GET');
+}
+
+//添加用户基本信息
+export function addInfo(data) {
+	return request('/app/fs/userinfo/add', data, 'POST','application/json;charset=UTF-8');
+}
+
+//修改用户基本信息
+export function updateInfo(data) {
+	return request('/app/fs/userinfo/update', data, 'POST','application/json;charset=UTF-8');
+}
+//删除用户基本信息
+export function deleteInfo(data) {
+	return request('/app/fs/userinfo/delete', data, 'GET','application/json;charset=UTF-8');
+}
+//获取会员分类
+export function getMember(data) {
+	return request('/app/common/getDictByKey?key=user_member_classify', data, 'GET');
+}
+//主页信息
+export function homeInfo(data) {
+	return request('/app/fs/health/profile/home/info', data, 'GET');
+}
+//健康档案主页信息
+export function getDoc(data) {
+	return request('/app/fs/health/profile/info', data, 'GET');
+}
+//添加健康档案信息
+export function addDoc(data) {
+	return request('/app/fs/health/profile/add', data, 'POST','application/json;charset=UTF-8');
+}
+
+//修改健康档案信息
+export function updateDoc(data) {
+	return request('/app/fs/health/profile/update', data, 'POST','application/json;charset=UTF-8');
+}
+//删除健康档案信息
+export function deleteDoc(data) {
+	return request('/app/fs/health/profile/delete', data, 'GET','application/json;charset=UTF-8');
+}
+
+//最新数据查询
+export function getLatest(data) {
+	return request('/app/fs/health/data/latest/info', data, 'GET','application/json;charset=UTF-8');
+}
+//最新数据查询可视化
+export function getLatestList(data) {
+	return request('/app/fs/health/data/latest/list', data, 'GET','application/json;charset=UTF-8');
+}
+//数据新增
+export function addData(data) {
+	return request('/app/fs/health/data/add', data, 'POST','application/json;charset=UTF-8');
+}
+//数据列表查询
+export function getDataList(data) {
+	return request('/app/fs/health/data/list', data, 'GET','application/json;charset=UTF-8');
+}
+//数据更新
+export function updateData(data) {
+	return request('/app/fs/health/data/update', data, 'POST','application/json;charset=UTF-8');
+}
+//数据数据删除
+export function deleteData(data) {
+	return request('/app/fs/health/data/delete', data, 'GET','application/json;charset=UTF-8');
+}
+//数据数据详情
+export function getDataById(data) {
+	return request('/app/fs/health/data/info', data, 'GET','application/json;charset=UTF-8');
+}

+ 18 - 18
api/index.js

@@ -2,62 +2,62 @@ import Request from '../common/request.js';
 let request = new Request().http
 
 export function getDicts(data) {
- 	 return request('/app/common/getDicts',data,'GET');
+ 	 return request('/store/app/common/getDicts',data,'GET');
 } 
 export function getCanvas() {
- 	 return request('/app/index/getCanvas',null,'GET');
+ 	 return request('/store/app/index/getCanvas',null,'GET');
 } 
 export function getMenu() {
- 	 return request('/app/index/getMenu',null,'GET');
+ 	 return request('/store/app/index/getMenu',null,'GET');
 } 
 export function getIndexData(data) {
- 	 return request('/app/index/getIndexData',data,'GET');
+ 	 return request('/store/app/index/getIndexData',data,'GET');
 } 
 export function getTuiArticle(data) {
- 	 return request('/app/index/getTuiArticle',data,'GET');
+ 	 return request('/store/app/index/getTuiArticle',data,'GET');
 } 
 export function getTuiDoctor(data) {
- 	 return request('/app/index/getTuiDoctor',data,'GET');
+ 	 return request('/store/app/index/getTuiDoctor',data,'GET');
 } 
 
 export function getTuiDoctorOrder(data) {
- 	 return request('/app/index/getTuiDoctorOrder',data,'GET');
+ 	 return request('/store/app/index/getTuiDoctorOrder',data,'GET');
 } 
 
 export function getCartCount() {
- 	 return request('/app/index/getCartCount',null,'GET');
+ 	 return request('/store/app/index/getCartCount',null,'GET');
 } 
 
 
  export function getFamousPrescribeList(data) {
-	 return request('/app/index/getFamousPrescribeList',data,'GET');
+	 return request('/store/app/index/getFamousPrescribeList',data,'GET');
  }
  export function getFamousPrescribeById(data) {
-	 return request('/app/index/getFamousPrescribeById',data,'GET');
+	 return request('/store/app/index/getFamousPrescribeById',data,'GET');
  }
  export function getQuestionsList(data) {
- 	 return request('/app/index/getQuestionsList',data,'GET');
+ 	 return request('/store/app/index/getQuestionsList',data,'GET');
  }
  export function getQuestionsById(data) {
- 	 return request('/app/index/getQuestionsById',data,'GET');
+ 	 return request('/store/app/index/getQuestionsById',data,'GET');
  }
  export function getMedicatedFoodList(data) {
- 	 return request('/app/index/getMedicatedFoodList',data,'GET');
+ 	 return request('/store/app/index/getMedicatedFoodList',data,'GET');
  }
  export function getMedicatedFoodById(data) {
- 	 return request('/app/index/getMedicatedFoodById',data,'GET');
+ 	 return request('/store/app/index/getMedicatedFoodById',data,'GET');
  }
  export function getVesselList(data) {
- 	 return request('/app/index/getVesselList',data,'GET');
+ 	 return request('/store/app/index/getVesselList',data,'GET');
  }
  export function getVesselById(data) {
- 	 return request('/app/index/getVesselById',data,'GET');
+ 	 return request('/store/app/index/getVesselById',data,'GET');
  }
  export function getChineseMedicineList(data) {
- 	 return request('/app/index/getChineseMedicineList',data,'GET');
+ 	 return request('/store/app/index/getChineseMedicineList',data,'GET');
  }
  export function getChineseMedicineById(data) {
- 	 return request('/app/index/getChineseMedicineById',data,'GET');
+ 	 return request('/store/app/index/getChineseMedicineById',data,'GET');
  }
  
  

+ 5 - 5
api/patient.js

@@ -3,20 +3,20 @@ let request = new Request().http
 
  
  export function getPatientList() {
- 	 return request('/app/patient/getPatientList',null,'GET');
+ 	 return request('/store/app/patient/getPatientList',null,'GET');
  }
 
  export function getPatientById(data) {
- 	 return request('/app/patient/getPatientById',data,'GET');
+ 	 return request('/store/app/patient/getPatientById',data,'GET');
  } 
  
  export function addPatient(data) {
- 	return request('/app/patient/addPatient',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/patient/addPatient',data,'POST','application/json;charset=UTF-8');
  }
 
  export function editPatient(data) {
- 	return request('/app/patient/editPatient',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/patient/editPatient',data,'POST','application/json;charset=UTF-8');
  }
  export function delPatient(data) {
- 	return request('/app/patient/delPatient',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/patient/delPatient',data,'POST','application/json;charset=UTF-8');
  }

+ 13 - 2
api/payment.js

@@ -3,9 +3,20 @@ let request = new Request().http
 
   
  export function payment(data) {
- 	 return request('/app/payment/payment',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/payment/payment',data,'POST','application/json;charset=UTF-8');
  }
   
- 
+  //余额充值套餐列表
+  export function getTemplates(data) {
+  	 return request('/recharge-templates/list',data,'GET');
+  }
+  //余额充值套餐详情
+  export function getTemplatesById(data) {
+  	 return request('/recharge-templates/'+data,data,'GET');
+  }
+ //余额充值套餐支付
+ export function toPayment(data) {
+ 	 return request('/recharge-templates/payment',data,'POST','application/json;charset=UTF-8');
+ }
  
  

+ 2 - 2
api/prescribe.js

@@ -2,10 +2,10 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function doPrescribe(data) {
- 	 return request('/app/prescribe/doPrescribe',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/prescribe/doPrescribe',data,'POST','application/json;charset=UTF-8');
  }
  export function getMyPrescribeList(data) {
- 	 return request('/app/prescribe/getMyPrescribeList',data,'GET');
+ 	 return request('/store/app/prescribe/getMyPrescribeList',data,'GET');
  }
  
  

+ 13 - 15
api/product.js

@@ -3,46 +3,46 @@ let request = new Request().http
  
 
  export function getProductCate(data) {
- 	 return request('/app/product/getProductCate',data,'GET');
+ 	 return request('/store/app/product/getProductCate',data,'GET');
  }
  
  export function getProductCateByPid(data) {
- 	 return request('/app/product/getProductCateByPid',data,'GET');
+ 	 return request('/store/app/product/getProductCateByPid',data,'GET');
  }
  
  export function getProducts(data) {
- 	 return request('/app/product/getProducts',data,'GET');
+ 	 return request('/store/app/product/getProducts',data,'GET');
  }
  export function getProductDetails(data) {
- 	 return request('/app/product/getProductDetails',data,'GET');
+ 	 return request('/store/app/product/getProductDetails',data,'GET');
  }
  
  export function getCarts(data) {
- 	 return request('/app/product/getCarts',data,'GET');
+ 	 return request('/store/app/product/getCarts',data,'GET');
  }
  export function addCart(data) {
- 	 return request('/app/product/addCart',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/product/addCart',data,'POST','application/json;charset=UTF-8');
  }
  export function delCart(data) {
- 	 return request('/app/product/delCart',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/product/delCart',data,'POST','application/json;charset=UTF-8');
  }
  export function cartNum(data) {
- 	 return request('/app/product/cartNum',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/product/cartNum',data,'POST','application/json;charset=UTF-8');
  }
  export function getCartCount(data) {
- 	 return request('/app/product/getCartCount',data,'GET');
+ 	 return request('/store/app/product/getCartCount',data,'GET');
  }
  export function getGoodsProduct() {
- 	 return request('/app/product/getGoodsProduct',null,'GET');
+ 	 return request('/store/app/product/getGoodsProduct',null,'GET');
  }
  export function getGoodsProducts(data) {
- 	 return request('/app/product/getGoodsProducts',data,'GET');
+ 	 return request('/store/app/product/getGoodsProducts',data,'GET');
  }
  export function getTuiProducts(data) {
- 	 return request('/app/product/getTuiProducts',data,'GET');
+ 	 return request('/store/app/product/getTuiProducts',data,'GET');
  }
  export function getStoreProductAttrValueList(data) {
- 	 return request('/app/product/getStoreProductAttrValueList',data,'GET');
+ 	 return request('/store/app/product/getStoreProductAttrValueList',data,'GET');
  }
  
  export function getProductStoreStock(data) {
@@ -50,8 +50,6 @@ let request = new Request().http
  }
  
  
-
- 
  
  
  

+ 8 - 2
api/store.js

@@ -3,6 +3,12 @@ let request = new Request().http
 
  // 获取门店详情
  export function getStoreById(data) {
- 	 return request('/app/store/getStoreById',data,'GET');
+ 	 return request('/store/app/store/getStoreById',data,'GET');
  }
- 
+ // 获取门店详情新
+ export function getNewStoreById(data) {
+ 	 return request('/store/app/store/'+data,data,'GET');
+ }
+ export function getIndexData(data) {
+  	 return request('/store/app/index/getIndexData',data,'GET');
+ } 

+ 6 - 6
api/storeAfterSales.js

@@ -2,24 +2,24 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function getMyStoreOrderItemByOrderId(data) {
- 	 return request('/app/storeAfterSales/getMyStoreOrderItemByOrderId',data,'GET');
+ 	 return request('/store/app/storeAfterSales/getMyStoreOrderItemByOrderId',data,'GET');
  } 
  export function applyAfterSales(data) {
- 	 return request('/app/storeAfterSales/applyAfterSales',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeAfterSales/store/applyAfterSales',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getAfterSalesList(data) {
- 	 return request('/app/storeAfterSales/getAfterSalesList',data,'GET');
+ 	 return request('/store/app/storeAfterSales/getAfterSalesList',data,'GET');
  } 
  
  export function getAfterSalesDetails(data) {
- 	 return request('/app/storeAfterSales/getAfterSalesDetails',data,'GET');
+ 	 return request('/store/app/storeAfterSales/getAfterSalesDetails',data,'GET');
  } 
  export function revoke(data) {
- 	 return request('/app/storeAfterSales/revoke',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeAfterSales/revoke',data,'POST','application/json;charset=UTF-8');
  }
  export function addDelivery(data) {
- 	 return request('/app/storeAfterSales/addDelivery',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeAfterSales/addDelivery',data,'POST','application/json;charset=UTF-8');
  }
  
  

+ 23 - 23
api/storeOrder.js

@@ -3,88 +3,88 @@ let request = new Request().http
 
  
  export function getMyStoreOrderList(data) {
- 	 return request('/app/storeOrder/getMyStoreOrderList',data,'GET');
+ 	 return request('/store/app/storeOrder/getMyStoreOrderList',data,'GET');
  } 
  export function getCompanyStoreOrderList(data) {
- 	 return request('/app/storeOrder/getCompanyStoreOrderList',data,'GET');
+ 	 return request('/store/app/storeOrder/getCompanyStoreOrderList',data,'GET');
  } 
  export function getMyStoreOrderById(data) {
- 	 return request('/app/storeOrder/getMyStoreOrderById',data,'GET');
+ 	 return request('/store/app/storeOrder/getMyStoreOrderById',data,'GET');
  } 
  
  
  export function getStoreOrderById(data) {
- 	 return request('/app/storeOrder/getStoreOrderById',data,'GET');
+ 	 return request('/store/app/storeOrder/getStoreOrderById',data,'GET');
  } 
  
  export function getStoreOrderByCombinationId(data) {
- 	 return request('/app/storeOrder/getStoreOrderByCombinationId',data,'GET');
+ 	 return request('/store/app/storeOrder/getStoreOrderByCombinationId',data,'GET');
  } 
  export function otherPaymentByCombinationId(data) {
- 	 return request('/app/storeOrder/otherPaymentByCombinationId',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/otherPaymentByCombinationId',data,'POST','application/json;charset=UTF-8');
  } 
  
  export function confirm(data) {
- 	 return request('/app/storeOrder/confirm',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/confirm',data,'POST','application/json;charset=UTF-8');
  }
  export function computed(data) {
- 	 return request('/app/storeOrder/computed',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/computed',data,'POST','application/json;charset=UTF-8');
  }
  export function create(data) {
- 	 return request('/app/storeOrder/create',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/create',data,'POST','application/json;charset=UTF-8');
  }
  export function pay(data) {
- 	 return request('/app/storeOrder/pay',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/pay',data,'POST','application/json;charset=UTF-8');
  }
  export function payByCombinationId(data) {
- 	 return request('/app/storeOrder/payByCombinationId',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/payByCombinationId',data,'POST','application/json;charset=UTF-8');
  }
  
  export function editPayType(data) {
- 	 return request('/app/storeOrder/editPayType',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/editPayType',data,'POST','application/json;charset=UTF-8');
  }
  
  export function editPayTypeByCombinationId(data) {
- 	 return request('/app/storeOrder/editPayTypeByCombinationId',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/editPayTypeByCombinationId',data,'POST','application/json;charset=UTF-8');
  }
  
  export function payRemain(data) {
- 	 return request('/app/storeOrder/payRemain',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/payRemain',data,'POST','application/json;charset=UTF-8');
  }
  
  export function otherPayment(data) {
- 	 return request('/app/storeOrder/otherPayment',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/otherPayment',data,'POST','application/json;charset=UTF-8');
  }
  
  export function otherPaymentRemain(data) {
- 	 return request('/app/storeOrder/otherPaymentRemain',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/otherPaymentRemain',data,'POST','application/json;charset=UTF-8');
  }
  
  
  export function cancelOrder(data) {
- 	 return request('/app/storeOrder/cancelOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/cancelOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function finishOrder(data) {
- 	 return request('/app/storeOrder/finishOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/finishOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function getExpress(data) {
- 	 return request('/app/storeOrder/getExpress',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/getExpress',data,'POST','application/json;charset=UTF-8');
  }
  
  
  export function confirmPackageOrder(data) {
- 	 return request('/app/storeOrder/confirmPackageOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/confirmPackageOrder',data,'POST','application/json;charset=UTF-8');
  }
  export function computedPackageOrder(data) {
- 	 return request('/app/storeOrder/computedPackageOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/computedPackageOrder',data,'POST','application/json;charset=UTF-8');
  }
  
  export function createPackageOrder(data) {
- 	 return request('/app/storeOrder/createPackageOrder',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/storeOrder/createPackageOrder',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getOrderCount() {
- 	 return request('/app/storeOrder/getOrderCount',null,'GET');
+ 	 return request('/store/app/storeOrder/getOrderCount',null,'GET');
  } 
  
  

+ 2 - 2
api/storeProductPackage.js

@@ -2,11 +2,11 @@ import Request from '../common/request.js';
 let request = new Request().http
 
  export function getStoreProductPackage(data) {
- 	 return request('/app/storeProductPackage/getStoreProductPackage',data,'GET');
+ 	 return request('/store/app/storeProductPackage/getStoreProductPackage',data,'GET');
  } 
  
  export function getStoreProductPackageDetails(data) {
- 	 return request('/app/storeProductPackage/getStoreProductPackageDetails',data,'GET');
+ 	 return request('/store/app/storeProductPackage/getStoreProductPackageDetails',data,'GET');
  } 
  
   

+ 6 - 6
api/test.js

@@ -2,23 +2,23 @@ import Request from '../common/request.js';
 let request = new Request().http
 
  export function getTestList(data) {
- 	 return request('/app/test/getTestList',data,'GET');
+ 	 return request('/store/app/test/getTestList',data,'GET');
  }
  export function getTestDetails(data) {
- 	 return request('/app/test/getTestDetails',data,'GET');
+ 	 return request('/store/app/test/getTestDetails',data,'GET');
  }
  
  export function getTestTempDetails(data) {
- 	 return request('/app/test/getTestTempDetails',data,'GET');
+ 	 return request('/store/app/test/getTestTempDetails',data,'GET');
  }
  export function getTestReport(data) {
- 	 return request('/app/test/getTestReport',data,'GET');
+ 	 return request('/store/app/test/getTestReport',data,'GET');
  }
  export function getTestReportImg(data) {
- 	 return request('/app/test/getTestReportImg',data,'GET');
+ 	 return request('/store/app/test/getTestReportImg',data,'GET');
  }
  export function doReport(data) {
-  	return request('/app/test/doReport',data,'POST','application/json;charset=UTF-8');
+  	return request('/store/app/test/doReport',data,'POST','application/json;charset=UTF-8');
  }
   
   

+ 17 - 18
api/user.js

@@ -2,59 +2,59 @@ import Request from '../common/request.js';
 let request = new Request().http
  
  export function loginByMiniApp(data) {
- 	 return request('/app/wx/loginByMiniApp',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/wx/loginByMiniApp',data,'POST','application/json;charset=UTF-8');
  }
  export function loginByMp(data) {
- 	 return request('/app/wx/loginByMp',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/wx/loginByMp',data,'POST','application/json;charset=UTF-8');
  }
  export function getUserInfo() {
- 	 return request('/app/user/getUserInfo',null,'GET');
+ 	 return request('/store/app/user/getUserInfo',null,'GET');
  }
  
  export function editUser(data) {
- 	return request('/app/user/editUser',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/user/editUser',data,'POST','application/json;charset=UTF-8');
  }
  
  export function getWeixinInfo(data) {
- 	return request('/app/wx/getWeixinInfo',data,'POST','application/json;charset=UTF-8');
+ 	return request('/store/app/wx/getWeixinInfo',data,'POST','application/json;charset=UTF-8');
  }
  export function checkLogin() {
- 	 return request('/app/user/checkLogin',null,'GET');
+ 	 return request('/store/app/user/checkLogin',null,'GET');
  }
  export function getTuiImg() {
- 	 return request('/app/user/getTuiImg',null,'GET');
+ 	 return request('/store/app/user/getTuiImg',null,'GET');
  }
  export function getMyTuiOrderList(data) {
- 	 return request('/app/user/getMyTuiOrderList',data,'GET');
+ 	 return request('/store/app/user/getMyTuiOrderList',data,'GET');
  }
  export function getTuiMoney() {
- 	 return request('/app/user/getTuiMoney',null,'GET');
+ 	 return request('/store/app/user/getTuiMoney',null,'GET');
  }
  export function getMyTuiList(data) {
- 	 return request('/app/user/getMyTuiList',data,'GET');
+ 	 return request('/store/app/user/getMyTuiList',data,'GET');
  }
  export function getTuiMoneyLogs(data) {
- 	 return request('/app/user/getTuiMoneyLogs',data,'GET');
+ 	 return request('/store/app/user/getTuiMoneyLogs',data,'GET');
  }
  
  export function getProductFoots(data) {
- 	 return request('/app/user/getProductFoots',data,'GET');
+ 	 return request('/store/app/user/getProductFoots',data,'GET');
  }
  export function delProductFoots(data) {
- 	 return request('/app/user/delProductFoots',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/user/delProductFoots',data,'POST','application/json;charset=UTF-8');
  }
  
  export function doExtract(data) {
- 	 return request('/app/user/doExtract',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/user/doExtract',data,'POST','application/json;charset=UTF-8');
  }
  export function getExtractList(data) {
- 	 return request('/app/user/getExtractList',data,'GET');
+ 	 return request('/store/app/user/getExtractList',data,'GET');
  }
  export function applyPromoter(data) {
- 	 return request('/app/user/applyPromoter',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/user/applyPromoter',data,'POST','application/json;charset=UTF-8');
  }
  export function bindPromoter(data) {
- 	 return request('/app/user/bindPromoter',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/user/bindPromoter',data,'POST','application/json;charset=UTF-8');
  }
  
  
@@ -67,5 +67,4 @@ let request = new Request().http
  
  
  
- 
  

+ 3 - 3
api/userSign.js

@@ -3,14 +3,14 @@ let request = new Request().http
  
  
  export function getUserSign() {
- 	 return request('/app/sign/getUserSign',null,'GET');
+ 	 return request('/store/app/sign/getUserSign',null,'GET');
  }
  
  export function getIntegral(data) {
- 	 return request('/app/sign/getIntegral',data,'GET');
+ 	 return request('/store/app/sign/getIntegral',data,'GET');
  }
  export function doSign(data) {
- 	 return request('/app/sign/sign',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/store/app/sign/sign',data,'POST','application/json;charset=UTF-8');
  }
  
  

+ 5 - 3
common/request.js

@@ -3,9 +3,11 @@ export default class Request {
 	http(router, data = {}, method,contentType) {
 		let that = this;
 		// let path = 'http://localhost:7014';
-		let path = 'https://api.qinggetai.com'; 
-		//let path = "http://d7zwsx.natappfree.cc"
-		//let path = "http://taf8642b.natappfree.cc/store"
+		let path = 'https://user.test.ylrztop.com/api'; 
+		// let path = 'http://d7zwsx.natappfree.cc'; 
+		// let path = "http://d7zwsx.natappfree.cc"
+		// let path = "https://api.qinggetai.com"
+		// console.log(router,'router')
 		uni.setStorageSync('requestPath',path)
 		// uni.showLoading({
 		// 	title: '加载中'

+ 7 - 8
components/pushangyuqi-calendar/pushangyuqi-calendar.vue

@@ -43,7 +43,7 @@
 
 
 			<view class="date-tr" v-for="(i,index) in dates" :key="index">
-				<view v-for="(j,k) in i" :key="k" :style="{color:j[0]}" :class="j[2]=='#008FD3'?'td active':'td'" @click="itemChose(j,index,k)">{{j[1]}}</view>
+				<view v-for="(j,k) in i" :key="k" :style="{color:(k==0||k==6)&&j[0]!=='#BBBBBB'?'#FF7700':j[0]}" :class="j[2]=='#008FD3'?'td active':'td'" @click="itemChose(j,index,k)">{{j[1]}}</view>
 			</view>
 			<view class="btn-box">
 				<view class="sub-btn" @click="submit()">
@@ -194,7 +194,6 @@ import config from '../../uni_modules/uview-ui/libs/config/config';
 						
 					}
 				}
-				console.log(this.dates,'array')
 			},
 
 			//计算当月的天数和上个月的天数
@@ -446,12 +445,12 @@ import config from '../../uni_modules/uview-ui/libs/config/config';
 					font-weight: 400;
 					color: #222222;
 					text-align: center;
-					// &:first-child{
-					// 	color: #FF7700;
-					// }
-					// &:last-child{
-					// 	color: #FF7700;
-					// }
+					&:first-child{
+						color: #FF7700;
+					}
+					&:last-child{
+						color: #FF7700;
+					}
 				}
 			}
 			.date-tr{

+ 0 - 181
components/tuiProduct.vue

@@ -1,181 +0,0 @@
-<template>
-   <view>
-		<view class="like-title">
-			<image src="/static/images/tui.png" mode=""></image>
-			<text class="text">精选药品</text>
-		</view>
-		<view class="like-list">
-			<view class="item" v-for="(item,index) in list" :key="index" @click="showProduct(item)">
-				<view class="img-box">
-					<image :src="item.image" mode=""></image>
-				</view>
-				<view class="info-box">
-					<view class="title ellipsis2">{{ item.productName }}</view>
-					<view class="price-box">
-						<view class="now">
-							<text class="unit">¥</text>
-							<text class="num">{{item.price.toFixed(2)}}</text>
-						</view>
-						<view class="old">¥{{item.otPrice.toFixed(2)}}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<Loading :loaded="loaded" :loading="loading"></Loading>
-   </view>
-</template>
-
-<script>
-  import {getTuiProducts} from '@/api/product'
-  import Loading from "@/components/Loading";
-  export default {
-	components: {Loading },
-    name: "likeProduct",
-	data() {
-		return {
-			page:{
-				page: 1,
-				pageSize: 10
-			},
-			total:0,
-			list:[],
-			loaded: false,
-			loading: false
-		};
-	},
-	created() {
-	},
-	mounted() {
-		this.getTuiProducts();
-	},
-	
-	methods: {
-		getTuiProducts(){
-			console.log(1)
-			var that=this;
-			if (that.loaded == true || that.loading == true) return;
-			that.loading = true;
-			uni.showLoading({
-				title:"加载中..."
-			})
-			getTuiProducts(that.page).then(
-				res => {
-					if(res.code==200){
-						that.total=res.data.total;
-						that.list.push.apply(that.list, res.data.list);
-						that.loading = false;
-						that.loaded = that.list.length<that.total?false:true;
-						that.page.page = that.page.page + 1;
-						uni.hideLoading()
-					}
-				},
-				err => {
-					uni.hideLoading()
-					uni.showToast({
-						title: err.msg ,
-						icon: 'none',
-						duration: 2000
-					});
-				}
-			);
-		},
-		showProduct(item){
-			uni.navigateTo({
-				url: '/pages/shopping/productDetails?productId='+item.productId
-			})
-		},
-	}
- 
-  };
-</script>
-<style lang="scss">
-	.like-title{
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		padding: 15upx 0rpx 30upx 0rpx;
-		image{
-			width: 37upx;
-			height: 37upx;
-			margin-right: 20upx;
-		}
-		.text{
-			font-size: 36upx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #111111;
-			line-height: 1;
-		}
-	}
-	.like-list{
-		display: flex;
-		flex-wrap: wrap;
-		.item{
-			margin-right: 20rpx;
-			margin-bottom: 20rpx;
-			width: 345rpx;
-			background: #FFFFFF;
-			box-shadow: 0px 0px 10rpx 4rpx rgba(199, 199, 199, 0.22);
-			border-radius: 20rpx;
-			overflow: hidden;
-			&:nth-child(2n) {
-				margin-right: 0;
-			}
-			.img-box{
-				width: 100%;
-				height: 334upx;
-				image{
-					width: 100%;
-					height: 100%;
-				}
-			}
-			.info-box{
-				box-sizing: border-box;
-				height: 182upx;
-				padding: 20upx 20upx 30upx;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				.title{
-					font-size: 26upx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #111111;
-					line-height: 40upx;
-				}
-				.price-box{
-					display: flex;
-					align-items: flex-end;
-					.now{
-						display: flex;
-						align-items: flex-end;
-						margin-right: 20upx;
-						.unit{
-							font-size: 24upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #FF6633;
-							line-height: 1.2;
-							margin-right: 4upx;
-						}
-						.num{
-							font-size: 36upx;
-							font-family: PingFang SC;
-							font-weight: bold;
-							color: #FF6633;
-							line-height: 1;
-						}
-					}
-					.old{
-						font-size: 26upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						text-decoration: line-through;
-						color: #BBBBBB;
-						line-height: 1.1;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 361 - 0
components/w-drag-sorts/w-drag-sorts.vue

@@ -0,0 +1,361 @@
+<template>
+  <scroll-view scroll-y :show-scrollbar="showScrollBar" class="w-drag-sorts-scroll" :style="{height: scrollBoxPxHeight+'px'}">
+    <view class="w-drag-sorts" :style="{height: boxHeight+'px'}" :class="{'inited':inited}">
+      <view class="w-drag-sorts-item" v-for="(vo,i) in newList" :key="i"
+        :style="{'top': vo.__top + 'px', ...finallyItemStyles}"
+        :class="{'draging':currentIndex == i}" @longpress="onRemove(i)" @click="navTo(i)">
+		<view class="align-center">
+			<view class="ctrl"
+			  v-if="showDragCtrl"
+			  @touchmove.stop.prevent 
+			  @touchstart="onTouchstart($event, i)"
+			  @touchmove="onTouchmove" 
+			  @touchend="onTouchend" 
+			>
+			  <!-- <image class="icon" :src="ctrlIcon" /> -->
+			  <image class="w32 h32" src="@/static/images/user/drag_icon.png"></image>
+			</view>
+			<view class="text">
+			  {{vo.indicatorName}}
+			</view>
+		</view>
+        <!-- <view class="content2"> -->
+          <view v-if="isRemove==true" class="item-icon" @click.stop="onDisabledClick(i,vo)" >
+            <!-- <image class="icon" :src="vo.icon"/> -->
+          			<image class="w40 h40" src="@/static/images/user/remove_icon.png"></image>
+          </view>
+		  <view v-if="isAdd==true" class="item-icon" @click.stop="onAddClick(i,vo)">
+		    <!-- <image class="icon" :src="vo.icon"/> -->
+		  			<image class="w40 h40" src="@/static/images/user/remove_add_icon.png"></image>
+		  </view>
+      <!--  </view> -->
+       
+      </view>
+    </view>
+  </scroll-view>
+</template>
+
+<script>
+  export default {
+    name: "wDragSorts",
+    props: {
+      //列表数据
+      listData: {
+        type: Array,
+        default: () => []
+      },
+      //列表项高度
+      itemHeight: {
+        type: Number,
+        default: 80
+      },
+      //列表内边距,
+      itemStyles: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      //控制图标
+      ctrlIcon:{
+        type:String,
+        default:'/static/images/user/drag_icon.png'
+      },
+      //是否显示拖动控制器
+      showDragCtrl:{
+        type:Boolean,
+        default: true,
+      },
+      //滚动去高度,如果单位rpx,如果不设置,内容容器高度一致
+      scrollBoxHeight:{
+        type: Number,
+        default:-1
+      },
+	  //是否显示删除图标
+	  isRemove:{
+		  type:Boolean,
+		  default: true,
+	  },
+	  //是否显示新增图标
+	  isAdd:{
+	  		  type:Boolean,
+	  		  default: true,
+	  }
+    },
+    data() {
+      return {
+        newList: [],
+        //当前列表项的下标
+        currentIndex: -1,
+        //记录拖动位置
+        moveY: 0,
+        //拖动状态
+        draging: false,
+        //初始化完成
+        inited:false,
+      }
+    },
+    computed:{
+      itemPxHeight(){
+        return uni.rpx2px(this.itemHeight);
+      },
+      boxHeight(){
+        return this.itemPxHeight * this.listData.length;
+      },
+      finallyItemStyles(){
+        return { ...(this.itemStyles || {}), height: this.itemHeight+'rpx'}
+      },
+      scrollBoxPxHeight(){
+        if( this.scrollBoxHeight < 0 ){
+          return this.boxHeight
+        }else{
+          let _height = uni.rpx2px(this.scrollBoxHeight);
+          if( _height > this.boxHeight ){
+            _height = this.boxHeight
+          }
+          return _height;
+        }
+      },
+      showScrollBar(){
+        return (this.boxHeight - this.scrollBoxPxHeight) > 10;
+      }
+    },
+    watch:{
+      showScrollBar:{
+        handler(v){
+          console.log(v)
+        },
+        immediate:true
+      },
+	  listData:{
+	    handler(v){
+	      this.listData=v
+		  this.init()
+	    },
+	    immediate:true
+	  }
+    },
+    created() {
+    },
+	mounted() {
+	   
+	},
+    methods: {
+      init() {
+        this.inited = false;
+        this.newList = this.listData.map(vo => {
+          return {
+            ...vo,
+            __top: 0,
+            __height: 0,
+            __otop: 0
+          }
+        });
+ // console.log(this.listData,'888')
+        // #ifdef MP-WEIXIN 
+        const selector = uni.createSelectorQuery().in(this);
+        // #endif
+        // #ifndef MP-WEIXIN 
+        const selector = uni.createSelectorQuery();
+        // #endif
+
+        this.$nextTick(() => {
+          selector.selectAll('.w-drag-sorts-item').fields({
+            rect: true,
+            size: true,
+          }, nodeItem => {
+            nodeItem.forEach((item, index) => {
+              const top = item.height * index;
+              this.$set(this.newList, index, {
+                ...this.newList[index],
+                __height: item.height,
+                __top: top,
+                __otop: top
+              });
+            });
+            this.inited = true;
+          }).exec(); 
+        });
+        
+      },
+      
+      onTouchstart(e, i) {
+        const pageY = e.touches[0]?.pageY || 0;
+        // 记录当前拖动元素的下标
+        this.currentIndex = i;
+        // 记录拖动前的位置
+        this.moveY = pageY
+      },
+
+      onTouchmove(e) {
+        const pageY = e.touches[0]?.pageY || 0;
+
+        const index = this.currentIndex;
+
+        //列表项替换的阈值,如果移动的位置大于上下项的一半就执行位置占位操作
+        const currentItem = this.newList[index];
+        const changeVar = currentItem?.__height / 2;
+
+        //判断上下移动的边界
+        let newTop = this.newList[index].__top + (pageY - this.moveY);
+        const max = currentItem?.__height * (this.newList.length - 1);
+        if (newTop < 0) {
+          newTop = 0;
+        }
+        if (newTop > max) {
+          newTop = max;
+        }
+
+        // 设置被拖动项最新的位置
+        this.newList[index].__top = newTop;
+
+        // 记录位置
+        this.moveY = pageY;
+        
+        // 向下拖动
+        if (currentItem.__top >= this.newList[index + 1]?.__top - changeVar) {
+          this.moveChange(1);
+        }
+        // 向上拖动
+        if (currentItem.__top <= this.newList[index - 1]?.__top + changeVar) {
+          this.moveChange(-1);
+        }
+
+      },
+
+      moveChange(addValue) {
+        const index = this.currentIndex;
+        if (this.draging) {
+          return
+        }
+        this.draging = true
+        let currentItem = this.newList[index];
+        const newIndex = index + addValue;
+        //取出被替换项的位置,等交换完位置之后,给当前列表项
+        const changeItemOTop = this.newList[newIndex].__otop;
+        //交换位置
+        this.newList[index] = this.newList[newIndex];
+        this.newList[newIndex] = currentItem;
+        //把当前项的位置给被替换的列表项
+        this.newList[index].__top = currentItem.__otop;
+        this.newList[index].__otop = currentItem.__otop;
+        //由于当前列表项的top一直在改变,所以这里只需要把被替换列表项的原有位置给当前列表项
+        //等到停止拖动再把这个被替换项的位置赋给当前项的top
+        this.newList[newIndex].__otop = changeItemOTop;
+
+        this.currentIndex = newIndex;
+        this.draging = false;
+      },
+
+      onTouchend(e) {
+        const index = this.currentIndex;
+        this.newList[index].__top = this.newList[index].__otop;
+        this.currentIndex = -1;
+        const returnData = this.getReturnData();
+        this.$emit('draged', [...returnData]);
+      },
+      
+      //返回移除操作附加属性的列表数据
+      getReturnData(){
+        const tmp = JSON.parse(JSON.stringify(this.newList));
+        tmp.map(vo => {
+          for (let key in vo) {
+            if (key.indexOf('__') == 0) {
+              delete vo[key];
+            }
+          }
+        })
+        return tmp;
+      },
+	  navTo(i){
+		  const item = this.getReturnData()[i]
+		  this.$emit("navClick",i, item);
+	  },
+      //长按删除
+      onRemove( i ){
+		  console.log(i,'1')
+        const item = this.getReturnData()[i]
+        this.$emit("itemRemoveClick",i, item);
+      },
+      //禁用
+      onDisabledClick( i ){
+        const item = this.getReturnData()[i]
+        this.$emit("itemDisabledClick",i, item);
+      },
+	  //启用
+	  onAddClick( i ){
+	    const item = this.getReturnData()[i]
+	    this.$emit("itemAddClick",i, item);
+	  },
+ //列表项图标点击事件点击
+ onItemIconClick( i ){
+   const item = this.getReturnData()[i]
+   this.$emit("itemIconClick",i, item);
+ },
+  
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  @mixin iconSize {
+    width: 48rpx;
+    height: 48rpx;
+  }
+
+  .w-drag-sorts {
+    width: 100%;
+    position: relative;
+    z-index: 1;
+    height: auto;
+
+    .icon {
+      @include iconSize();
+    }
+    
+    &.inited>&-item{
+      position: absolute;
+    }
+
+    &-item {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      box-sizing: border-box;
+      background-color: #fff;
+      padding: 0 30rpx;
+      border-bottom: 0 !important;
+
+      &.draging {
+        box-shadow: 0 0px 30rpx #ddd;
+        z-index: 1;
+      }
+   .text{
+   	 margin-left: 20rpx;
+	 font-family: PingFang SC, PingFang SC;
+	 font-weight: 400;
+	 font-size: 32rpx;
+	 color: #222426;
+	 text-align: left;
+   }
+   .item-icon{
+     @include iconSize();
+    
+   }
+    //   .content2 {
+		  // flex:1;
+    //     height: 100%;
+    //     display: flex;
+    //     align-items: center;
+        
+    //   }
+
+      .ctrl {
+        width: 32rpx;
+		height: 32rpx;
+      }
+
+    }
+  }
+</style>

+ 1 - 1
manifest.json

@@ -50,7 +50,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wx29d26f63f836be7f",
+        "appid" : "wxd56333375d59f1b8",
         "lazyCodeLoading" : "requiredComponents",
         "setting" : {
             "urlCheck" : false,

+ 246 - 42
pages.json

@@ -567,6 +567,16 @@
 						"enablePullDownRefresh": false
 					}
 					
+				}
+				,{
+					"path" : "user/pointsMall",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "积分商城",
+						"navigationStyle": "custom",
+						"enablePullDownRefresh": false
+					}
+					
 				}
 				,{
 					"path" : "user/refundOrderList",
@@ -841,6 +851,159 @@
 						"enablePullDownRefresh": false
 					}
 					
+				},{
+					"path" : "recharge/index",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "充值",
+						"navigationStyle": "custom",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "recharge/detail",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "充值详情",
+						"navigationStyle": "custom",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/addInformation",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "体检信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				}
+				,{
+					"path" : "user/information",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "体检信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/reportList",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "体检报告列表",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/dataAnalysis",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "数据分析",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/batchRecord",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "批量记录",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/editIndicator",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "编辑指标",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/addIndicator",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "新增指标",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/addResult",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "检查结果",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},
+				{
+					"path" : "user/myFolder",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "我的附件",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/default",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "默认",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				}
+				,{
+					"path" : "user/dietList",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "饮食列表",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path" : "user/dietDetail",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "饮食详情",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+					
+				},{
+					"path": "user/complaint",
+					"style": {
+						"navigationBarTitleText": "投诉反馈",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
 				}
 				
 			]
@@ -885,6 +1048,33 @@
 						}
 					}
 				},
+				{
+					"path": "todoDetail",
+					"style": {
+						"navigationBarTitleText": "事项详情",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "complaintList",
+					"style": {
+						"navigationBarTitleText": "投诉列表",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "complaintDetail",
+					"style": {
+						"navigationBarTitleText": "投诉详情",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
 				{
 					"path": "clientDetail",
 					"style": {
@@ -894,6 +1084,60 @@
 						}
 					}
 				},
+				{
+					"path": "doc",
+					"style": {
+						"navigationBarTitleText": "添加用户信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "addUser",
+					"style": {
+						"navigationBarTitleText": "用户信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "addDoc",
+					"style": {
+						"navigationBarTitleText": "健康档案",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "buyOrder",
+					"style": {
+						"navigationBarTitleText": "购买信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "addServe",
+					"style": {
+						"navigationBarTitleText": "商品信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "addCompetitors",
+					"style": {
+						"navigationBarTitleText": "竟品信息",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
 				{
 					"path": "executionRecord",
 					"style": {
@@ -1208,16 +1452,6 @@
 						}
 					}
 				},
-				{
-					"path": "ConsultationDetails",
-					"style": {
-						"navigationBarTitleText": "病例描述",
-						"enablePullDownRefresh": false,
-						"app-plus": {
-							"titleNView": false
-						}
-					}
-				},
 				{
 					"path": "healthfiles",
 					"style": {
@@ -1230,9 +1464,9 @@
 					}
 				},
 				{
-					"path": "doc",
+					"path": "ConsultationDetails",
 					"style": {
-						"navigationBarTitleText": "添加用户信息",
+						"navigationBarTitleText": "病例描述",
 						"enablePullDownRefresh": false,
 						"app-plus": {
 							"titleNView": false
@@ -1257,36 +1491,6 @@
 							"titleNView": false
 						}
 					}
-				},
-				{
-					"path": "buyOrder",
-					"style": {
-						"navigationBarTitleText": "购买信息",
-						"enablePullDownRefresh": false,
-						"app-plus": {
-							"titleNView": false
-						}
-					}
-				},
-				{
-					"path": "addServe",
-					"style": {
-						"navigationBarTitleText": "商品信息",
-						"enablePullDownRefresh": false,
-						"app-plus": {
-							"titleNView": false
-						}
-					}
-				},
-				{
-					"path": "addCompetitors",
-					"style": {
-						"navigationBarTitleText": "竞品信息",
-						"enablePullDownRefresh": false,
-						"app-plus": {
-							"titleNView": false
-						}
-					}
 				}
 			]
 		},{

+ 1 - 0
pages/auth/login.vue

@@ -134,6 +134,7 @@ export default {
 			uni.showLoading({
 				title:"处理中..."
 			})
+			console.log(e,"e")
 			if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
 				this.utils.getProvider()
 				.then(provider => {

+ 1 - 1
pages/common/launch.vue

@@ -2,7 +2,7 @@
 	<view class="content">
 		[[]]
 		<view class="loadding" v-if="loadding==true">
-			<image src="/static/images/logo.png"></image>
+			<image src="https://user.test.ylrztop.com/images/logo.png"></image>
 			<text class="text">壹柒玖康养集团</text>
 		</view>
 	</view>

+ 1 - 1
pages/home/components/NewProduct.vue

@@ -276,7 +276,7 @@
 				display: flex;
 				justify-items: center;
 				align-items: center;
-				box-shadow: 2rpx 2rpx 2rpx 2rpx rgba(0, 0, 0, 0.1);
+				// box-shadow: 2rpx 2rpx 2rpx 2rpx rgba(0, 0, 0, 0.1);
 				text{
 					transform: skew(8deg);
 					display: block;

+ 8 - 9
pages/home/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="content">
 		<!-- 背景图片 -->
-		<image class="bg" src="../../static/images/home_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/home_top_bg.png" mode="widthFix"></image>
 		<view>
 			<view class="top-inner">
 				<view class="fixed-top-box" :style="{ background: bgColor }">
@@ -68,7 +68,7 @@
 		<view class="online-inquiry">
 			<!-- <view class="item" @click="navTo('/pages/doctor/doctorQr')"> -->
 			<view class="item" @click="navTo('/pages_health/healthConsulting')">
-				<image class="bg-img" src="../../static/images/online_treat.png" mode="aspectFill"></image>
+				<image class="bg-img" src="https://user.test.ylrztop.com/images/online_treat.png" mode="aspectFill"></image>
 				<view class="inner">
 					<text class="title">健康<text class="color-pink">咨询</text></text>
 					<text class="sub-title">三师在线服务</text>
@@ -76,7 +76,7 @@
 			</view>
 			<!-- <view class="item" @click="goAuthUrl('/pages_user/user/prescribeOrder')"> -->
 			<view class="item" @click="navTo('/pages_health/healthfiles')">
-				<image class="bg-img" src="../../static/images/chu_query.png" mode="aspectFill"></image>
+				<image class="bg-img" src="https://user.test.ylrztop.com/images/chu_query.png" mode="aspectFill"></image>
 				<view class="inner">
 					<text class="title">健康<text class="color-yellow">专管</text></text>
 					<text class="sub-title">糖尿病/体重</text>
@@ -517,7 +517,7 @@
 	import Menu from '@/components/Menu.vue'
 	import HotProduct from './components/HotProduct.vue'
 	import NewProduct from './components/NewProduct.vue'
-	import TuiProduct from '@/components/tuiProduct.vue'
+	// import TuiProduct from '@/components/tuiProduct.vue'
 	import {
 		getUserInfo,
 		bindPromoter
@@ -528,8 +528,7 @@
 			freeAudio,
 			Menu,
 			HotProduct,
-			NewProduct,
-			TuiProduct
+			NewProduct
 		},
 		data() {
 			return {
@@ -697,7 +696,7 @@
 			return {
 				title: '壹柒玖康养集团-您的专属健康解决方案',
 				path: `/pages/common/launch`,
-				imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		onReachBottom() {
@@ -709,7 +708,7 @@
 			return {
 				title: '壹柒玖康养集团-您的专属健康解决方案',
 				query: '', //页面参数
-				imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		computed: {
@@ -732,7 +731,7 @@
 			}
 			this.getStoreConfig();
 			//this.getTuiDoctor()
-			this.getCanvas();
+			// this.getCanvas();
 			this.getDoctorArticleList();
 			this.getArticleList();
 		},

+ 1 - 1
pages/home/new/articleList.vue

@@ -69,7 +69,7 @@
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					textNoMore:"已经到底了",
 					empty: {
-						icon:'/static/images/empty_icon.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},

+ 2 - 2
pages/home/new/chineseMedicineDetails.vue

@@ -61,7 +61,7 @@
 				return {
 					title: this.item.medicineName,
 					path: '/pages_index/chineseMedicineDetails?id='+this.id,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -71,7 +71,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/diseaseDetails.vue

@@ -45,7 +45,7 @@
 				return {
 					title: this.item.diseaseName,
 					path: '/pages_index/diseaseDetails?id='+this.diseaseId,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -55,7 +55,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.diseaseName,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/new/diseaseList.vue

@@ -62,7 +62,7 @@
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					textNoMore:"已经到底了",
 					empty: {
-						icon:'/static/images/empty_icon.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},

+ 2 - 2
pages/home/new/famousPrescribeDetails.vue

@@ -61,7 +61,7 @@
 				return {
 					title: this.item.prescribeName,
 					path: '/pages_index/famousPrescribeDetails?id='+this.id,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -71,7 +71,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/medicatedFoodDetails.vue

@@ -39,7 +39,7 @@
 				return {
 					title: this.item.foodName,
 					path: '/pages_index/medicatedFoodDetails?id='+this.id,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -49,7 +49,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/new/medicatedFoodList.vue

@@ -78,7 +78,7 @@
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					textNoMore:"已经到底了",
 					empty: {
-						icon:'/static/images/empty_icon.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},

+ 2 - 2
pages/home/new/questionsDetails.vue

@@ -36,7 +36,7 @@
 				return {
 					title: this.item.vesselName,
 					path: '/pages_index/questionsDetails?id='+this.id,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -46,7 +46,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/new/questionsList.vue

@@ -68,7 +68,7 @@
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					textNoMore:"已经到底了",
 					empty: {
-						icon:'/static/images/empty_icon.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},

+ 2 - 2
pages/home/new/test.vue

@@ -135,7 +135,7 @@
 				return {
 					title: "健康体质检测",
 					path: '/pages_index/test?tempId='+this.tempId,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -145,7 +145,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康体质检测",
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 3 - 3
pages/home/new/testDetails.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="content">
 		<view class="bg-box">
-			<image src="/static/images/71014b69fdcc4b56ae2a84bdc28f11c3.png"></image>
+			<image src="https://user.test.ylrztop.com/images/71014b69fdcc4b56ae2a84bdc28f11c3.png"></image>
 			<view class="title-box">
 				<view class="title">
 					{{item.name}}
@@ -46,7 +46,7 @@
 				return {
 					title: "健康自测",
 					path: '/pages_index/testDetails?tempId='+this.tempId,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -56,7 +56,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康自测",
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 4 - 4
pages/home/new/testList.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="content">
 		<view class="bg">
-			<image src="/static/images/8e52ab17eabc4534b3ce56026fd5c624.jpg"></image>
+			<image src="https://user.test.ylrztop.com/images/8e52ab17eabc4534b3ce56026fd5c624.jpg"></image>
 		</view>
 		<mescroll-body  top="0rpx"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
 			<view class="test-list">
@@ -47,7 +47,7 @@
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					textNoMore:"已经到底了",
 					empty: {
-						icon:'/static/images/empty_icon.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
@@ -63,7 +63,7 @@
 				return {
 					title: "健康自测",
 					path: '/pages_index/testList',
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -73,7 +73,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康自测",
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/new/testResult.vue

@@ -2,7 +2,7 @@
 	<view class="content">
 		<view class="cont">
 			<view class="bg">
-				<image src="/static/images/8e52ab17eabc4534b3ce56026fd5c624.jpg" ></image>
+				<image src="https://user.test.ylrztop.com/images/8e52ab17eabc4534b3ce56026fd5c624.jpg" ></image>
 			</view>
 			<view class="cont-box" v-if="report!=null">
 				<view class="user">

+ 2 - 2
pages/home/new/vesselDetails.vue

@@ -41,7 +41,7 @@
 				return {
 					title: this.item.vesselName,
 					path: '/pages_index/vesselDetails?id='+this.id,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -51,7 +51,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.vesselName,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/productList.vue

@@ -306,7 +306,7 @@
 			align-items: center;
 			justify-content: center;
 			&.active .label{
-				color: #0bb3f2;
+				color: #008FD3;
 			}
 			.label{
 				font-size: 26upx;

+ 2 - 2
pages/shopping/confirmCreateOrder.vue

@@ -145,8 +145,8 @@
 				 <div class="coupon-list" v-if="couponsList.length > 0">
 				   <div class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
 				     <div class="money" >
-				       <image v-if="item.status==0" class="img" src="../../static/images/coupon1.png" mode="widthFix"></image>
-				 	  <image v-if="item.status!=0" class="img" src="../../static/images/coupon2.png" mode="widthFix"></image>
+				       <image v-if="item.status==0" class="img" src="https://user.test.ylrztop.com/images/coupon1.png" mode="widthFix"></image>
+				 	  <image v-if="item.status!=0" class="img" src="https://user.test.ylrztop.com/images/coupon2.png" mode="widthFix"></image>
 				 	  <div style="z-index: 999;">
 				         ¥<span class="num">{{ item.couponPrice }}</span>
 				       </div>

+ 2 - 2
pages/shopping/confirmOrder.vue

@@ -145,8 +145,8 @@
 				 <div class="coupon-list" v-if="couponsList.length > 0">
 				   <div class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
 				     <div class="money" >
-				       <image v-if="item.status==0" class="img" src="../../static/images/coupon1.png" mode="widthFix"></image>
-				 	  <image v-if="item.status!=0" class="img" src="../../static/images/coupon2.png" mode="widthFix"></image>
+				       <image v-if="item.status==0" class="img" src="https://user.test.ylrztop.com/images/coupon1.png" mode="widthFix"></image>
+				 	  <image v-if="item.status!=0" class="img" src="https://user.test.ylrztop.com/images/coupon2.png" mode="widthFix"></image>
 				 	  <div style="z-index: 999;">
 				         ¥<span class="num">{{ item.couponPrice }}</span>
 				       </div>

+ 2 - 2
pages/shopping/confirmPackageOrder.vue

@@ -91,8 +91,8 @@
 				 <div class="coupon-list" v-if="couponsList.length > 0">
 				   <div class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
 				     <div class="money" >
-				       <image v-if="item.status==0" class="img" src="../../static/images/coupon1.png" mode="widthFix"></image>
-				 	  <image v-if="item.status!=0" class="img" src="../../static/images/coupon2.png" mode="widthFix"></image>
+				       <image v-if="item.status==0" class="img" src="https://user.test.ylrztop.com/images/coupon1.png" mode="widthFix"></image>
+				 	  <image v-if="item.status!=0" class="img" src="https://user.test.ylrztop.com/images/coupon2.png" mode="widthFix"></image>
 				 	  <div style="z-index: 999;">
 				         ¥<span class="num">{{ item.couponPrice }}</span>
 				       </div>

+ 1 - 1
pages/shopping/paymentOrder.vue

@@ -189,7 +189,7 @@
 			return {
 				title: "帮TA支付",
 				path: '/pages_user/user/otherPaymentOrder?orderId='+this.orderId + combinationOrderId,
-				imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 			
 		},

+ 1 - 1
pages/shopping/prescribe.vue

@@ -230,7 +230,7 @@
 				return {
 					title: "填写处方信息",
 					path: "/pages/shopping/prescribe?orderId="+this.prescribeOrder + combinationOrderId,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 		},

+ 25 - 22
pages/shopping/productDetails.vue

@@ -306,7 +306,7 @@
 					</view>
 				</view> -->
 				<!-- 健康师 -->
-				<view class="tech-pBox" style="margin-top: 20rpx;">
+			<!-- 	<view class="tech-pBox" style="margin-top: 20rpx;">
 					<view class="label">选择健康管理师</view>
 					<view 
 						v-for="(item,index) in storePriceList.slice(0,2)"
@@ -323,15 +323,8 @@
 							</view>
 							<view class="tech-right-bottom">{{item.storeName}}</view>
 						</view>
-					
-						<!-- <view class="bot x-bc shop-pBox-name">
-							<view class="name">{{item.storeName}}</view>
-							<view @click.stop="navgetTo('/pages_shopping/store/index?storeId='+item.storeId)">
-								<u-icon name="arrow-right" color="#000" size="14"></u-icon>
-							</view>
-						</view> -->
 					</view>	
-				</view>
+				</view> -->
 				<!-- 门店 -->
 				<!-- <view class="spec-box form-item" v-if="stores.length>0">
 					<text class="label">所属门店</text>
@@ -344,7 +337,7 @@
 						</view>
 					</picker>
 				</view> -->
-			<!-- 	<view class="shop-pBox" style="margin-top: 20rpx;" v-if="storePriceList&&storePriceList.length>0">
+				<view class="shop-pBox" style="margin-top: 20rpx;" v-if="storePriceList&&storePriceList.length>0">
 					<view 
 						v-for="(item,index) in storePriceList.slice(0,3)"
 						:key="index"
@@ -370,7 +363,7 @@
 							<text>¥{{productValueSelect.price.toFixed(2)}}</text>
 						</view>
 					</view>
-				</view> -->
+				</view>
 				<!-- 店铺弹窗 -->
 				<u-popup :show="showStorePicker" :round="16" mode="bottom">
 					<view class="storepopup">
@@ -430,7 +423,7 @@
 			</view>
 		</popupBottom>
 		<view class="loadding" v-if="loadding==true">
-			<image src="../../static/images/logo.png"></image>
+			<image src="../..https://user.test.ylrztop.com/images/logo.png"></image>
 			<text class="text">加载中...</text>
 		</view>
 		<u-modal :show="showModal" title="温馨提示" content="处方药须凭处方在药师指导下购买和使用" @confirm="hideModal()"></u-modal>
@@ -523,6 +516,7 @@
 		},
 		onShow() {
 			this.getProductDetails();
+			// this.getStoreList();
 		},
 		//发送给朋友
 		onShareAppMessage(res) {
@@ -531,7 +525,7 @@
 				return {
 					title: this.product.productName,
 					path: '/pages/shopping/productDetails?productId='+this.product.productId+"&userId="+user.userId,
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 		},
@@ -542,7 +536,7 @@
 				return {
 					title: this.product.productName,
 					query:'productId='+this.product.productId+"&userId="+user.userId,//页面参数
-					imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -558,6 +552,16 @@
 					rej => {}
 				);
 			},
+			getStoreList(){
+				getStoreList().then(
+					res => {
+						if(res.code==200){
+							// uni.setStorageSync('dicts',JSON.stringify(res));
+						} 
+					},
+					rej => {}
+				);
+			},
 			showImg(img) {
 				if(img!=null){
 					var imgs=[];
@@ -667,14 +671,12 @@
 			},
 			// 加入购物车
 			addCart(type) {
-				this.type=type;
-				this.specVisible = true
-				// this.utils.isLogin().then(res => {
-				// 	if(res){
-				// 		this.type=type;
-				// 		this.specVisible = true
-				// 	}
-				// });
+				this.utils.isLogin().then(res => {
+					if(res){
+						this.type=type;
+						this.specVisible = true
+					}
+				});
 			},
 			getProductDetails(){
 				let data = {
@@ -834,6 +836,7 @@
 				if(this.specNum>=this.productValueSelect.stock){
 					this.specNum=this.productValueSelect.stock
 				}
+				console.log(this.specNum,'===')
 			},
 			// 确定选择该规格
 			submit() {

+ 158 - 73
pages/user/index.vue

@@ -11,21 +11,40 @@
 						</view>
 						<view class="name-phone">
 							<view class="name">{{user.nickname}}</view>
-							<view class="phone">{{utils.parsePhone(user.phone)}}</view>
+							<view class="phone">
+							<image class="w32 h32" src="../../static/images/company/phone_icon16.png" mode=""></image>
+							<text>{{user.phone?utils.parsePhone(user.phone):'-'}}</text>
+							</view>
 						</view>
 					</view>
 					<view class="right">
 						<uni-badge size="small" :text="msgNum" absolute="rightTop" type="error">
 							<view class="set" @click="navgetTo('/pages_user/user/personInfo')">
-								<image src="../../static/images/icon-set.png" mode=""></image>
+								<image class="w48 h48" src="../../static/images/user/center_set_icon.png" mode=""></image>
 							</view>
 						</uni-badge>
 						<uni-badge size="small" :text="msgNum" absolute="rightTop" type="error">
 							<view class="msg-box" @click="navgetTo('/pages_user/user/message')">
-								<image src="../../static/images/icon-msg.png" mode=""></image>
+								<image class="w48 h48" src="../../static/images/user/center_new_icon.png" mode=""></image>
 							</view>
 						</uni-badge>
+						<uni-badge size="small" absolute="rightTop" type="error">
+						<view class="msg-box ml10" @click="navgetTo('/pages_user/user/complaint')">
+							<u-icon name="edit-pen" color="#222426" size="28"></u-icon>
+						</view>
+						</uni-badge>
+					</view>
+				</view>
+				<view class="balance">
+					<view class="left">
+						<view class="align-center">
+							<view class="text">账户余额</view>
+							<image @click="seeChange" class="w32 h32" :src="isShow?'../../static/images/user/eye_open_icon.png':'../../static/images/user/eye_close_icon.png'" mode=""></image>
+						</view>
+						<view v-if="isShow" class="num">{{user.money||0}}</view>
+						<view v-else class="num">{{utils.parsePrice(user.money||0)}}</view>
 					</view>
+					<view class="right" @click="navgetTo('/pages_user/recharge/index')">充值</view>
 				</view>
 				<!-- 我的订单 -->
 				<view class="my-order">
@@ -34,35 +53,35 @@
 							<text class="title">我的订单</text>
 							<view class="all-order" @click="showOrder('')">
 								<text class="text">全部订单</text>
-								<image src="../../static/images/arrow4.png" mode=""></image>
+								<image class="w48 h48"  src="../../static/images/right.png" mode=""></image>
 							</view>
 						</view>
 						<view class="status-box">
 							<uni-badge size="small" :text=count0 absolute="rightTop" type="error">
 								<view class="item" @click="showOrder('0')">
-									<image src="../../static/images/payment.png" mode=""></image>
+									<image src="../../static/images/user/obligation_icon24.png" mode=""></image>
 									<text class="text">待付款</text>
 								</view>
 							</uni-badge>
 							<uni-badge size="small" :text=count1 absolute="rightTop" type="error">
 							<view class="item" @click="showOrder('1')">
-								<image src="../../static/images/send_goods.png" mode=""></image>
+								<image src="../../static/images/user/pending_shipment_icon24.png" mode=""></image>
 								<text class="text">待发货</text>
 							</view>
 							</uni-badge>
 							<uni-badge size="small" :text=count2 absolute="rightTop" type="error">
 							<view class="item" @click="showOrder('2')">
-								<image src="../../static/images/sou_goods.png" mode=""></image>
+								<image src="../../static/images/user/dai_shouhuo_icon24.png" mode=""></image>
 								<text class="text">待收货</text>
 							</view>
 							</uni-badge>
 							<view class="item" @click="showOrder('3')">
-								<image src="../../static/images/completed.png" mode=""></image>
+								<image src="../../static/images/user/completed_icon24.png" mode=""></image>
 								<text class="text">已完成</text>
 							</view>
 							<uni-badge size="small" :text=afterSalesCount absolute="rightTop" type="error">
 							<view class="item" @click="navgetTo('/pages_user/user/refundOrderList')">
-								<image src="../../static/images/after_sales.png" mode=""></image>
+								<image src="../../static/images/user/after_sales_icon24.png" mode=""></image>
 								<text class="text">售后/退款</text>
 							</view>
 							</uni-badge>
@@ -88,57 +107,61 @@
 								<text class="text">我的问诊</text>
 							</view> -->
 							<view class="item" @click="navgetTo('/pages_user/user/prescribeOrder')">
-								<image src="../../static/images/prescription.png" mode=""></image>
+								<image src="../../static/images/user/purple_my_prescription_icon24.png" mode=""></image>
 								<text class="text">我的处方</text>
 							</view>
 							<view class="item" @click="navgetTo('/pages_user/user/patient')">
-								<image src="../../static/images/management.png" mode=""></image>
+								<image src="../../static/images/user/purple_the_patient_icon24.png" mode=""></image>
 								<text class="text">就诊人管理</text>
 							</view>
 							<view class="item" @click="navgetTo('/pages_user/user/address')">
-								<image src="../../static/images/address.png" mode=""></image>
+								<image src="../../static/images/user/purple_address_management_icon24.png" mode=""></image>
 								<text class="text">收货地址</text>
 							</view>
 							<view class="item no-marin-bottom" @click="navgetTo('/pages_user/user/integral')">
-								<image src="../../static/images/integral.png" mode=""></image>
+								<image src="../../static/images/user/purple_points_management_icon24.png" mode=""></image>
 								<text class="text">积分管理</text>
 							</view>
+							<!-- <view class="item no-marin-bottom" @click="navgetTo('/pages_user/user/pointsMall')">
+								<image src="../../static/images/user/purple_points_management_icon24.png" mode=""></image>
+								<text class="text">积分管理</text>
+							</view> -->
 							<view class="item no-marin-bottom"  @click="navgetTo('/pages_shopping/shopping/myCoupon')">
-								<image src="../../static/images/mycoupon.png" mode=""></image>
+								<image src="../../static/images/user/purple_coupon_icon24.png" mode=""></image>
 								<text class="text">优惠券</text>
 							</view>
 							<view class="item no-marin-bottom" @click="navgetTo('/pages_user/user/storeProductRelation')">
-								<image src="../../static/images/service_file.png" mode=""></image>
+								<image src="../../static/images/user/purple_my_footprint_icon24.png" mode=""></image>
 								<text class="text">我的足迹</text>
 							</view>
 							<view class="item no-marin-bottom" @click="openH5('/h5/userAgreement')">
-								<image src="../../static/images/service_file.png" mode=""></image>
+								<image src="../../static/images/user/purple_user_agreement_icon24.png" mode=""></image>
 								<text class="text">用户协议</text>
 							</view>
 							<view class="item no-marin-bottom align-top"  @click="openH5('/h5/privacyPolicy')">
-								<image src="../../static/images/advice.png" mode=""></image>
+								<image src="../../static/images/user/purple_privacy_protection_icon24.png" mode=""></image>
 								<text class="text">隐私保护</text>
 							</view>
 							<view class="item no-marin-bottom">
-								<image src="../../static/images/customer1.png" mode=""></image>
+								<image src="../../static/images/user/purple_service_center_icon24.png" mode=""></image>
 								<text class="text">专属客服</text>
 								<button class="contact-btn" open-type="contact"></button>
 							</view>
 							<view v-if="user.isPromoter==0" class="item no-marin-bottom"  @click="navgetTo('/pages_user/user/userTuiAdd')">
-								<image src="../../static/images/my_promotion.png" mode=""></image>
+								<image src="../../static/images/user/purple_health_ambassador_icon24.png" mode=""></image>
 								<text class="text">申请健康大使</text>
 							</view>
 							<view v-if="user.isPromoter==1" class="item no-marin-bottom"  @click="navgetTo('/pages_user/user/userTui')">
-								<image src="../../static/images/my_promotion.png" mode=""></image>
+								<image src="../../static/images/user/purple_health_ambassador_icon24.png" mode=""></image>
 								<text class="text">我的推广</text>
 							</view>
 							<view class="item no-marin-bottom"  @click="navgetTo('/pages/home/cert')">
-								<image src="../../static/images/service_file.png" mode=""></image>
+								<image src="../../static/images/user/purple_qualification_certificate_icon24.png" mode=""></image>
 								<text class="text">资质证书</text>
 							</view>
 	
 							<view class="item no-marin-bottom" @click="toManager()">
-								<image src="../../static/images/sale_file.png" mode=""></image>
+								<image src="../../static/images/user/purple_sales_management_icon24.png" mode=""></image>
 								<text class="text">销售管理</text>
 							</view>
 							 
@@ -186,7 +209,7 @@
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
 				// 消息数量
 				msgNum: 0,
-			 
+			 isShow:true
 				 
 			};
 		},
@@ -195,14 +218,17 @@
 		},
 		onShow() {
 			console.log("onshow")
-			// this.getUserInfo();
-			// this.getOrderCount();
+			this.getUserInfo();
+			this.getOrderCount();
 		},
 		onReachBottom() {
 			console.log("onReachBottom")
 			this.$refs.product.getGoodsProducts();
 		},
 		methods: {
+			seeChange(){
+				this.isShow=!this.isShow
+			},
 			callService(){
 				 uni.makePhoneCall({
 					phoneNumber:"4000717770",
@@ -229,20 +255,19 @@
 				);
 			},
 			toManager(){
-				console.log('---')
-				uni.navigateTo({
-					url: '/pages_company/index'
-				})
-				// if(this.utils.checkCompanyUserLoginState()){
-				// 	uni.navigateTo({
-				// 		url: '/pages_company/index'
-				// 	})
-				// }
-				// else{
-				// 	uni.navigateTo({
-				// 		url: '/pages_company/auth/login'
-				// 	})
-				// }
+				// uni.navigateTo({
+				// 	url: '/pages_company/index'
+				// })
+				if(this.utils.checkCompanyUserLoginState()){
+					uni.navigateTo({
+						url: '/pages_company/index'
+					})
+				}
+				else{
+					uni.navigateTo({
+						url: '/pages_company/auth/login'
+					})
+				}
 				
 			},
 			openH5(url){
@@ -298,9 +323,10 @@
 		width: 100%;
 		height: 494upx;
 		position: relative;
-		background-image: url(../../static/images/personl_top_bg.png);
-		background-repeat: repeat-x;
-		background-size: 40upx 100%;
+		// background-image: url(../../static/images/personl_top_bg.png);
+		// background-repeat: repeat-x;
+		// background-size: 40upx 100%;
+		background: linear-gradient(266deg, #CDEAFE 0%, #EBF4F9 100%);
 		.top-inner{
 			width: 100%;
 			height: 100%;
@@ -339,12 +365,24 @@
 							line-height: 1;
 						}
 						.phone{
-							font-size: 28upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #666666;
-							line-height: 1;
+							width: 220rpx;
+							height: 48rpx;
 							margin-top: 30upx;
+							background: linear-gradient( 90deg, #FEA501 0%, #FECB8A 100%);
+							border-radius: 24rpx 24rpx 24rpx 24rpx;
+							border: 1rpx solid #FEDDB9;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							text{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #fff;
+								line-height: 1;
+								margin-left: 4rpx;
+							}
+							
 						}
 					}
 				}
@@ -353,28 +391,74 @@
 					align-items: center;
 					justify-content: center;
 					.msg-box{
-						margin-left: 10upx;
-						width: 44upx;
-						height: 44upx;
-						image{
-							width: 100%;
-							height: 100%;
-						}
+						// margin-left: 10upx;
+						width: 48upx;
+						height: 48upx;
+						// image{
+						// 	width: 100%;
+						// 	height: 100%;
+						// }
 					}
 					.set{
 						
-						width: 44upx;
-						height: 44upx;
-						image{
-							width: 100%;
-							height: 100%;
-						}
+						width: 48upx;
+						height: 48upx;
+						margin-right: 20rpx;
+						// image{
+						// 	width: 100%;
+						// 	height: 100%;
+						// }
 					}
 				}
-				
+			}
+			.balance{
+				padding: 30rpx;
+				height: 180rpx;
+				margin: 50rpx 20rpx 0;
+				border-radius: 16rpx 16rpx 16rpx 16rpx;
+				background: linear-gradient( 266deg, #E83924 0%, #FEA603 100%);
+				// background-image:url(../../static/images/balancebg.png);
+				// background-repeat: no-repeat;
+				// background-size: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				.left{
+					display: flex;
+					flex-direction: column;
+					align-items: flex-start;
+					justify-content:space-around;
+					height: 100%;
+					.text{
+						font-family: PingFang SC;
+						font-weight: 400;
+						font-size: 26rpx;
+						color: #FFFFFF;
+						text-align: left;
+						margin-right: 16rpx;
+					}
+					.num{
+						font-family: Roboto, Roboto;
+						font-weight: 500;
+						font-size: 64rpx;
+						color: #FFFFFF;
+					}
+				}
+				.right{
+					width: 132rpx;
+					height: 64rpx;
+					line-height: 64rpx;
+					background: #FFFFFF;
+					border-radius: 32rpx 32rpx 32rpx 32rpx;
+					font-family: PingFang SC, PingFang SC;
+					font-weight: 500;
+					font-size: 26rpx;
+					color: #FF5030;
+					text-align: center;
+				}
 			}
 			.my-order{
-				padding: 50upx 20upx 0;
+				padding: 20upx 20upx 0;
 				.inner{
 					box-sizing: border-box;
 					height: 245upx;
@@ -389,7 +473,7 @@
 						align-items: center;
 						justify-content: space-between;
 						.title{
-							font-size: 34upx;
+							font-size: 36upx;
 							font-family: PingFang SC;
 							font-weight: bold;
 							color: #222222;
@@ -406,10 +490,10 @@
 								line-height: 1;
 								margin-right: 8upx;
 							}
-							image{
-								width: 14upx;
-								height: 24upx;
-							}
+							// image{
+							// 	width: 14upx;
+							// 	height: 24upx;
+							// }
 						}
 					}
 					.status-box{
@@ -423,8 +507,8 @@
 							align-items: center;
 							justify-content: center;
 							image{
-								width: 40upx;
-								height: 40upx;
+								width: 48upx;
+								height: 48upx;
 								margin-bottom: 18upx;
 							}
 							.text{
@@ -454,7 +538,7 @@
 			padding: 40upx 30upx;
 			
 			.title{
-				font-size: 34upx;
+				font-size: 36upx;
 				font-family: PingFang SC;
 				font-weight: bold;
 				color: #222222;
@@ -475,14 +559,14 @@
 					margin-bottom: 50upx;
 					position: relative;
 					image{
-						width: 44upx;
-						height: 44upx;
+						width: 48upx;
+						height: 48upx;
 					}
 					.text{
 						font-size: 24upx;
 						font-family: PingFang SC;
 						font-weight: 500;
-						color: #111111;
+						color: #333;
 						line-height: 1;
 						margin-top: 20upx;
 					}
@@ -531,6 +615,7 @@
 		image{
 			width:100%;
 			height: 100%;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
 		}
 		.tel_btn{
 			width: 100%;

+ 391 - 0
pages_company/addCompetitors.vue

@@ -0,0 +1,391 @@
+<template>
+	<view class="content">
+		<view class="inner">
+			<view class="form-box">
+				<view class="form-item">
+					<text class="label">竞品公司<text class="color-price">*</text></text>
+					<input  class="input-width" type="text" v-model="form.competitorCompany" placeholder="请输入竞品公司"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">产品<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.product" placeholder="请输入产品"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">价格<text class="color-price">*</text></text>
+					<input  class="input-width" type="digit" v-model="form.price" placeholder="请输入价格"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">服务<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.service" placeholder="请输入竞品公司服务方式"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">免费服务次数<text class="color-price">*</text></text>
+					<input class="input-width" type="number" v-model="form.freeServiceTimes" placeholder="请输入服务次数"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+		</view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">
+				<image src="/static/images/health/nav_add_icon24.png" class="w48 h48"></image>
+				<text>新增竞品信息</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getCompetitorById,saveCompetitor,updateCompetitor
+	} from '@/api/companyUser.js'
+	export default {
+		data() {
+			return {
+				type: null,
+				patientId: null,
+				famaleurl:"/static/images/health/female_profile.png",
+				maleurl:"/static/images/health/my_heads.png",
+				checked:1,
+				array:['是','否'],
+				tags: [{
+					name: '心脏病',
+					checked:true,
+					id: 1
+				},
+				{
+					name: '脑梗死',
+						checked:false,
+					id: 2
+				},{
+					name: '肾病',
+						checked:false,
+					id: 3
+				},{
+					name: '脂肪肝',
+						checked:false,
+					id: 4
+				}],
+				form: {
+					"competitorCompany": null,
+					"freeServiceTimes":null,
+					"price":null,
+					"product": null,
+					"remark": null,
+					"service": null,
+				},
+				id:null
+			};
+		},
+		onLoad(options) {
+			this.type = options.type;
+			this.form.userId=options.userId
+			this.form.companyUserId=options.companyUserId;
+			console.log(this.type)
+			if (this.type == 'edit') {
+				this.id=options.id;
+				this.getCompetitorInfo();
+			}
+		},
+		methods: {
+			getCompetitorInfo() {
+				var data = {
+					id: this.id
+				};
+				getCompetitorById(data).then(
+					res => {
+						if (res.code == 200) {
+							this.form = res.data;
+
+						} else {
+							uni.showToast({
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit() {
+				if (this.form.competitorCompany == null || this.form.competitorCompany == '') {
+					uni.showToast({
+						icon: 'none',
+						title: "公司名称不能为空",
+					});
+					return;
+				}
+				if (this.form.product == null || this.form.product == '') {
+					uni.showToast({
+						icon: 'none',
+						title: "产品不能为空",
+					});
+					return;
+				}
+				if (this.form.price == null || this.form.price == '') {
+					uni.showToast({
+						icon: 'none',
+						title: "价格不能为空",
+					});
+					return;
+				}
+				if (this.form.service == null || this.form.service == '') {
+					uni.showToast({
+						icon: 'none',
+						title: "服务不能为空",
+					});
+					return;
+				}
+				if (this.form.freeServiceTimes == null || this.form.freeServiceTimes == '') {
+					uni.showToast({
+						icon: 'none',
+						title: "次数不能为空",
+					});
+					return;
+				}
+				if (this.type == "add") {
+					this.saveCompetitor()
+				} else if (this.type == "edit") {
+					this.updateCompetitor()
+				}
+			},
+			updateCompetitor() {
+				updateCompetitor(this.form).then(
+					res => {
+						if (res.code == 200) {
+							uni.showToast({
+								icon: 'success',
+								title: "操作成功",
+							});
+							setTimeout(function() {
+								uni.$emit('refreshBuyOrder');
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			saveCompetitor() {
+				saveCompetitor(this.form).then(
+					res => {
+						if (res.code == 200) {
+							uni.showToast({
+								icon: 'success',
+								title: "操作成功",
+							});
+							setTimeout(function() {
+								uni.$emit('refreshBuyOrder');
+								uni.navigateBack({
+									delta: 1
+								})
+							}, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+	}
+
+	.content {
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+
+		.inner {
+			// height: calc(100% - 120upx);
+			padding: 20upx;
+
+			.form-box {
+				padding: 0 30upx;
+				background: #FFFFFF;
+				border-radius: 16upx;
+				margin-bottom: 20upx;
+
+				.form-title {
+					font-family: PingFang SC;
+					font-weight: 600;
+					font-size: 40rpx;
+					color: #222426;
+					text-align: left;
+					padding: 30rpx 0;
+					display: block;
+				}
+
+				.form-item {
+					padding: 30upx 0;
+					display: flex;
+					align-items: flex-start;
+					border-bottom: 1px solid #F1F1F1;
+
+					&:last-child {
+						border-bottom: none;
+					}
+        
+					.label {
+						width: 300upx;
+						text-align: left;
+						font-size: 32upx;
+						line-height: 44upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						flex-shrink: 0;
+					}
+
+					input {
+						text-align: right;
+					}
+               
+					.form-input {
+						font-size: 30upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						text-align: right;
+					}
+
+					.form-item-tag{
+						margin-right: 16rpx;
+						.tag{
+							border-radius: 8rpx 8rpx 8rpx 8rpx;
+							border: 2rpx solid #ECECEC;
+							display: flex;
+							align-items: center;
+							padding: 24rpx;
+							font-family: PingFang SC;
+							font-weight: 400;
+							font-size: 24rpx;
+							&.active{
+								background: #F0FAFF;
+								border: 2rpx solid #008FD3;
+								color: #008FD3;
+							}
+						}
+						
+						
+						
+					}
+					.right{
+						display: flex;
+						align-items: center;
+					}
+					.sex-box{
+						flex:1;
+						display: flex;
+						align-items: center;
+						justify-content: flex-end;
+						.sex-item{
+							width: 146rpx;
+							height: 64rpx;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							background: #F5F7FA;
+							border-radius: 32rpx 32rpx 32rpx 32rpx;
+							margin-left: 16rpx;
+							.u-icon__icon{
+								margin: 0;
+							}
+							text{
+								// font-family: PingFang SC, PingFang SC;
+								font-weight: 400;
+								font-size: 28rpx;
+								color: #898E91;
+								margin-left: 12rpx;
+							}
+							&.active{
+								background: #FCF0E7;
+								text{
+									color:#FF5030
+								}
+							}
+						}
+					}
+					.form-textarea{
+						font-size: 30upx;
+						color: #999999;
+						height: 100upx;
+						padding: 4upx 0;
+					}
+					 
+					.birth-picker {
+						flex: 1;
+						display: flex;
+						align-items: center;
+						
+						.right-box{
+							width: 100%;
+							display: flex;
+							align-items: center;
+							.input-box{
+								// width: 470upx;
+							}
+							.arrow{
+								width: 13upx;
+								height: 23upx;
+								margin-left: 20upx;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.btn-box {
+			height: 120upx;
+			padding: 0 30upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			// position: fixed;
+			// width: 90%;
+			// bottom: 0;
+			// left: 50%;
+			// transform: translate(-50%,-50%);
+			// background: #FFFFFF;
+			.sub-btn {
+				width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3 ;
+				border-radius: 44upx;
+				margin-bottom: 40upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				image{
+					margin-right: 16rpx;
+				}
+			}
+		}
+	}
+</style>

+ 620 - 0
pages_company/addDoc.vue

@@ -0,0 +1,620 @@
+<template>
+	<view class="content">
+		<view class="inner">
+			<view class="form-box">
+				<text class="form-title">身体信息</text>
+				<view class="form-item">
+					<text class="label">身高<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.height" placeholder="请输入身高"
+						placeholder-class="form-input" />
+					<text class="unit">cm</text>
+				</view>
+				<view class="form-item">
+					<text class="label">体重<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.weight" placeholder="请输入体重"
+						placeholder-class="form-input" />
+					<text class="unit">kg</text>
+				</view>
+				<view class="form-item">
+					<text class="label">腰围<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.waistCircumference"
+						placeholder="请输入腰围" placeholder-class="form-input" />
+					<text class="unit">cm</text>
+				</view>
+				<view class="form-item">
+					<text class="label">臀围<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hipCircumference"
+						placeholder="请输入臀围" placeholder-class="form-input" />
+					<text class="unit">cm</text>
+				</view>
+
+
+			</view>
+			<view class="form-box">
+				<text class="form-title">疾病史</text>
+				<view class="form-item">
+					<text class="label">高血糖</text>
+					<radio-group style="display: flex;align-items: center;">
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperglycemiaChange(0)" value="0" :checked="form.hyperglycemia==0"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">无</text>
+						</label>
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperglycemiaChange(1)" value="1" :checked="form.hyperglycemia==1"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">轻微</text>
+						</label>
+						<label>
+							<radio @click="hyperglycemiaChange(2)" value="2" :checked="form.hyperglycemia==2"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">严重</text>
+						</label>
+					</radio-group>
+				</view>
+				<view class="form-item">
+					<text class="label">测量值</text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hyperglycemiaValue"
+						placeholder="请输入测量值" placeholder-class="form-input" />
+					<text class="unit">mmol/L</text>
+				</view>
+				<view class="form-item">
+					<text class="label">高血压</text>
+					<radio-group style="display: flex;align-items: center;">
+						<label style="margin-right: 50upx;">
+							<radio @click="hypertensionChange(0)" value="0" :checked="form.hypertension==0"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">无</text>
+						</label>
+						<label style="margin-right: 50upx;">
+							<radio @click="hypertensionChange(1)" value="1" :checked="form.hypertension==1"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">轻微</text>
+						</label>
+						<label>
+							<radio @click="hypertensionChange(2)" value="2" :checked="form.hypertension==2"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">严重</text>
+						</label>
+					</radio-group>
+				</view>
+				<view class="form-item">
+					<text class="label">收缩压</text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.systolicPressure"
+						placeholder="请输入测量值" placeholder-class="form-input" />
+					<text class="unit">mmHg</text>
+				</view>
+				<view class="form-item">
+					<text class="label">舒张压</text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.diastolicPressure"
+						placeholder="请输入测量值" placeholder-class="form-input" />
+					<text class="unit">mmHg</text>
+				</view>
+				<view class="form-item">
+					<text class="label">高血脂</text>
+					<radio-group style="display: flex;align-items: center;">
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperlipidemiaChange(0)" value="0" :checked="form.hyperlipidemia==0"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">无</text>
+						</label>
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperlipidemiaChange(1)" value="1" :checked="form.hyperlipidemia==1"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">轻微</text>
+						</label>
+						<label>
+							<radio @click="hyperlipidemiaChange(2)" value="2" :checked="form.hyperlipidemia==2"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">严重</text>
+						</label>
+					</radio-group>
+				</view>
+				<view class="form-item">
+					<text class="label">高尿酸</text>
+					<radio-group style="display: flex;align-items: center;">
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperuricemiaChange(0)" value="0" :checked="form.hyperuricemia==0"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">无</text>
+						</label>
+						<label style="margin-right: 50upx;">
+							<radio @click="hyperuricemiaChange(1)" value="1" :checked="form.hyperuricemia==1"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">轻微</text>
+						</label>
+						<label>
+							<radio @click="hyperuricemiaChange(2)" value="2" :checked="form.hyperuricemia==2"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">严重</text>
+						</label>
+					</radio-group>
+				</view>
+				<view class="form-item">
+					<text class="label">测量值</text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hyperuricemiaValue"
+						placeholder="请输入测量值" placeholder-class="form-input" />
+					<text class="unit">μmol/L</text>
+				</view>
+				<view class="form-item">
+					<text class="label">高体重</text>
+					<radio-group style="display: flex;align-items: center;">
+						<label style="margin-right: 50upx;">
+							<radio @click="bodyWeightStatusChange(0)" value="0" :checked="form.bodyWeightStatus==0"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">正常</text>
+						</label>
+						<label style="margin-right: 50upx;">
+							<radio @click="bodyWeightStatusChange(1)" value="1" :checked="form.bodyWeightStatus==1"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">偏瘦</text>
+						</label>
+						<label>
+							<radio @click="bodyWeightStatusChange(2)" value="2" :checked="form.bodyWeightStatus==2"
+								style="margin-right: 16upx;" />
+							<text class="sex-text">偏重</text>
+						</label>
+					</radio-group>
+				</view>
+
+			</view>
+			<view class="form-box">
+				<text class="form-title">其他病史</text>
+				<view class="form-item wrap">
+					<view class="form-item-tag mb16" v-for="(item, index) in tags" :key="index"
+						@click="tagsClick(item)">
+						<view :class="checkedItems.includes(item.dictValue)?'tag active':'tag'">
+							{{item.dictLabel}}
+						</view>
+					</view>
+					<!-- 其他选项 -->
+					<view class="form-item-tag" @click="toggleOther">
+						<view :class="otherSelected ? 'tag active' : 'tag'">
+							+ 其他
+						</view>
+					</view>
+				</view>
+				<view class="form-item" v-if="otherSelected">
+					<text class="label">其他病史</text>
+					<input class="input-width" type="text" v-model="symptom" placeholder="请输入病史"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">症状史</text>
+				<view class="form-item wrap">
+					<view class="form-item-tag mb16" v-for="(item, index) in cates" :key="index"
+						@click="catesClick(item)">
+						<view :class="checkedItems2.includes(item.dictValue)?'tag active':'tag'">
+							{{item.dictLabel}}
+						</view>
+					</view>
+					<!-- 其他选项 -->
+					<view class="form-item-tag" @click="toggleOther2">
+						<view :class="otherSelected2 ? 'tag active' : 'tag'">
+							+ 其他
+						</view>
+					</view>
+				</view>
+<!-- 其他症状输入框(选中"其他"时显示) -->
+			<view class="form-item" v-if="otherSelected2">
+				<text class="label">其他症状</text>
+				<input class="input-width" type="text" v-model="symptom2" placeholder="请输入症状"
+					placeholder-class="form-input" />
+			</view>
+			</view>
+			
+		</view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">保存</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getDoc,
+		addDoc,
+		updateDoc
+	} from '@/api/health.js'
+	import {
+		getDictByKey
+	} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				type: null,
+				patientId: null,
+				symptom: null,
+				symptom2: null,
+				famaleurl: "/static/images/health/female_profile.png",
+				maleurl: "/static/images/health/my_heads.png",
+				// 存储所有选中的症状值
+				checkedItems: [],
+				checkedItems2: [],
+				text: [],
+				text2: [],
+				// 其他选项是否选中
+				otherSelected: false,
+				otherSelected2: false,
+				// 其他症状输入内容
+				tags: [
+					// 	{
+					// 	name: '心脏病',
+					// 	checked:true,
+					// 	id: 1
+					// },
+					// {
+					// 	name: '脑梗死',
+					// 		checked:false,
+					// 	id: 2
+					// },{
+					// 	name: '肾病',
+					// 		checked:false,
+					// 	id: 3
+					// },{
+					// 	name: '脂肪肝',
+					// 		checked:false,
+					// 	id: 4
+					// },
+				],
+				cates: [],
+				form: {
+					"height": null,
+					"weight": null,
+					"waistCircumference": null,
+					"hipCircumference": null,
+					"hyperglycemia": 0,
+					"hyperglycemiaValue": null,
+					"hypertension": 0,
+					"systolicPressure": null,
+					"diastolicPressure": null,
+					"hyperlipidemia": 0,
+					"hyperuricemia": 0,
+					"hyperuricemiaValue": null,
+					"bodyWeightStatus": 0,
+					"otherMedicalHistory": null,
+					"symptomHistory": null,
+				}
+
+			};
+		},
+		onLoad(options) {
+			// this.type = options.type;
+			this.companyUserId = options.companyUserId;
+			this.form.userId =options.userId;
+			this.form.companyUserId = options.companyUserId;
+			console.log(this.type)
+			// if (this.type == 'edit') {
+				this.getDoc();
+			// }
+			this.getDictByKey('other_medical_history')
+			this.getDictByKey('medical_history')
+		},
+		methods: {
+			sexChange(type) {
+				this.form.sex = type
+			},
+			//血糖
+			hyperglycemiaChange(e) {
+				this.form.hyperglycemia = e
+			},
+			//血压
+			hypertensionChange(e) {
+				this.form.hypertension = e
+			},
+			//血脂
+			hyperlipidemiaChange(e) {
+				this.form.hyperlipidemia = e
+			},
+			//尿酸
+			hyperuricemiaChange(e) {
+				this.form.hyperuricemia = e
+			},
+			bodyWeightStatusChange(e) {
+				this.form.bodyWeightStatus = e
+			},
+			tagsClick(item) {
+				const index = this.checkedItems.indexOf(item.dictValue);
+				if (index > -1) {
+					// 如果已选中则移除
+					this.checkedItems.splice(index, 1);
+				} else {
+					// 如果未选中则添加
+					this.checkedItems.push(item.dictValue);
+					this.text.push(item.dictLabel)
+				}
+			},
+			catesClick(item) {
+				const index = this.checkedItems2.indexOf(item.dictValue);
+				if (index > -1) {
+					// 如果已选中则移除
+					this.checkedItems2.splice(index, 1);
+				} else {
+					// 如果未选中则添加
+					this.checkedItems2.push(item.dictValue);
+					this.text2.push(item.dictLabel)
+				}
+			},
+			// 切换其他选项
+			toggleOther() {
+				this.otherSelected = !this.otherSelected;
+				// 清空其他症状输入
+				if (!this.otherSelected) {
+					this.symptom = null;
+				}
+				},
+				toggleOther2() {
+						this.otherSelected2 = !this.otherSelected2;
+						// 清空其他症状输入
+						if (!this.otherSelected2) {
+							this.symptom2 = null;
+						}
+					},
+					getDictByKey(key) {
+						var data = {
+							key: key
+						}
+						getDictByKey(data).then(
+							res => {
+								if (res.code == 200) {
+									if (key == "other_medical_history") {
+										this.tags = res.data;
+									}
+									if (key == "medical_history") {
+										this.cates = res.data;
+									}
+								}
+							},
+							err => {}
+						);
+
+					},
+				getDoc() {
+					var data = {
+						userId: this.form.userId
+					};
+					getDoc(data).then(
+						res => {
+							if (res.code == 200) {
+								if(res.data==null){
+									this.type='add'
+								}else{
+									this.type='edit'
+									this.form = res.data;
+								}
+							} else {
+								uni.showToast({
+									title: res.msg,
+								});
+							}
+						},
+						rej => {}
+					);
+				},
+					submit() {
+						if (this.form.height == null) {
+							uni.showToast({
+								icon: 'none',
+								title: "身高不能为空",
+							});
+							return;
+						}
+						if (this.form.weight == null) {
+							uni.showToast({
+								icon: 'none',
+								title: "体重不能为空",
+							});
+							return;
+						}
+						if (this.form.waistCircumference == null) {
+							uni.showToast({
+								icon: 'none',
+								title: "腰围不能为空",
+							});
+							return;
+						}
+						if (this.form.hipCircumference == null) {
+							uni.showToast({
+								icon: 'none',
+								title: "臀围不能为空",
+							});
+							return;
+						}
+						// console.log(this.text,'---')
+			this.form.otherMedicalHistory = this.utils.joinWithSymptom(this.text, this.symptom)
+			this.form.symptomHistory = this.utils.joinWithSymptom(this.text2, this.symptom2)
+						if (this.type == "add") {
+							this.addDoc()
+						} else if (this.type == "edit") {
+							this.editDoc()
+						}
+
+					},
+					editDoc() {
+						updateDoc(this.form).then(
+							res => {
+								if (res.code == 200) {
+									uni.showToast({
+										icon: 'success',
+										title: "操作成功",
+									});
+									setTimeout(function() {
+										uni.$emit('refreshHealthFiles');
+										uni.navigateBack({
+											delta: 1
+										})
+									}, 500);
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg,
+									});
+								}
+							},
+							rej => {}
+						);
+					},
+					addDoc() {
+						addDoc(this.form).then(
+							res => {
+								if (res.code == 200) {
+									uni.showToast({
+										icon: 'success',
+										title: "操作成功",
+									});
+									setTimeout(function() {
+										uni.$emit('refreshHealthFiles');
+										uni.navigateBack({
+											delta: 1
+										})
+									}, 500);
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg,
+									});
+								}
+							},
+							rej => {}
+						);
+					},
+					// 出生日期选择
+					bindDateChange: function(e) {
+						this.form.birthdate = e.target.value
+					},
+			}
+		}
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+	}
+
+	.content {
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+
+		.inner {
+			// height: calc(100% - 120upx);
+			padding: 20upx;
+
+			.form-box {
+				padding: 0 30upx;
+				background: #FFFFFF;
+				border-radius: 16upx;
+				margin-bottom: 20upx;
+
+				.form-title {
+					font-family: PingFang SC;
+					font-weight: 600;
+					font-size: 40rpx;
+					color: #222426;
+					text-align: left;
+					padding: 30rpx 0;
+					display: block;
+				}
+
+				.form-item {
+					padding: 30upx 0;
+					display: flex;
+					align-items: flex-start;
+					border-bottom: 1px solid #F1F1F1;
+
+					&:last-child {
+						border-bottom: none;
+					}
+
+					.label {
+						width: 150upx;
+						text-align: left;
+						font-size: 32upx;
+						line-height: 44upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						flex-shrink: 0;
+					}
+
+					input {
+						text-align: left;
+					}
+
+					.unit {
+						width: 150upx;
+						text-align: right;
+						font-size: 32upx;
+						line-height: 44upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						flex-shrink: 0;
+					}
+
+					.form-input {
+						font-size: 30upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						text-align: left;
+					}
+
+					.form-item-tag {
+						margin-right: 16rpx;
+
+						.tag {
+							border-radius: 8rpx 8rpx 8rpx 8rpx;
+							border: 2rpx solid #ECECEC;
+							display: flex;
+							align-items: center;
+							padding: 24rpx;
+							font-family: PingFang SC;
+							font-weight: 400;
+							font-size: 24rpx;
+
+							&.active {
+								background: #F0FAFF;
+								border: 2rpx solid #008FD3;
+								color: #008FD3;
+							}
+						}
+
+
+
+					}
+				}
+			}
+		}
+
+		.btn-box {
+			height: 120upx;
+			padding: 0 30upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			// position: fixed;
+			// width: 90%;
+			// bottom: 0;
+			// left: 50%;
+			// transform: translate(-50%,-50%);
+			// background: #FFFFFF;
+			.sub-btn {
+				width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3;
+				border-radius: 44upx;
+				margin-bottom: 40upx;
+			}
+		}
+	}
+</style>

+ 110 - 102
pages_health/addServe.vue → pages_company/addServe.vue

@@ -3,50 +3,45 @@
 		<view class="inner">
 			<view class="form-box">
 				<view class="form-item">
-					<text class="label">商品名称</text>
-					<input  class="input-width" type="text" v-model="form.userName" placeholder="请输入商品名称"
+					<text class="label">商品名称<text class="color-price">*</text></text>
+					<input  class="input-width" type="text" v-model="form.productName" placeholder="请输入商品名称"
 						placeholder-class="form-input" />
 				</view>
-				<view class="form-item">
-					<text class="label">出生年月</text>
-					<picker class="birth-picker" mode="date"   @change="bindDateChange">
-						<view class="right-box">
-							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择出生年月" placeholder-class="form-input" disabled="disabled" />
-							</view>
-							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
-						</view>
-					</picker>
+				<view class="form-item justify-between">
+					<text class="label">购买数量<text class="color-price">*</text></text>
+					<!-- <input class="input-width" type="number" v-model="" placeholder="请输入金额"
+						placeholder-class="form-input" /> -->
+						<view class="num-box"><u-number-box v-model="form.purchaseQuantity" integer></u-number-box></view>
 				</view>
 				<view class="form-item">
-					<text class="label">金额</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入金额"
+					<text class="label">金额<text class="color-price">*</text></text>
+					<input class="input-width" type="digit" v-model="form.amount" placeholder="请输入金额"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">预计用完时间</text>
-					<picker class="birth-picker" mode="date"   @change="bindDateChange">
+					<text class="label">预计用完时间<text class="color-price">*</text></text>
+					<picker class="birth-picker" mode="date" :start="startDate"  @change="bindDateChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择时间" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.plannedCompletionDate" placeholder="请选择时间" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
 					</picker>
 				</view>
 				<view class="form-item">
-					<text class="label">购买次数</text>
-					<input  class="input-width" type="text" v-model="form.userName" placeholder="请输入购买次数"
+					<text class="label">购买次数<text class="color-price">*</text></text>
+					<input  class="input-width" type="number" v-model="form.purchaseTimes" placeholder="请输入购买次数"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">剩余次数</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入剩余次数"
+					<text class="label">剩余次数<text class="color-price">*</text></text>
+					<input class="input-width" type="number" v-model="form.surplusTimes" placeholder="请输入剩余次数"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">会员情况</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入会员情况"
+					<text class="label">会员情况<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.memberStatus" placeholder="请输入会员情况"
 						placeholder-class="form-input" />
 				</view>
 			</view>
@@ -62,13 +57,12 @@
 
 <script>
 	import {
-		getDocDetails,
-		addDoc,
-		editDoc
-	} from '@/api/doc.js'
+		getServiceById,updateService,saveService
+	} from '@/api/companyUser.js'
 	export default {
 		data() {
 			return {
+				startDate:this.utils.timeFormat(new Date()),
 				type: null,
 				patientId: null,
 				famaleurl:"/static/images/health/female_profile.png",
@@ -94,20 +88,26 @@
 					id: 4
 				}],
 				form: {
-					userName: null,
-					idCard: null,
-					sex: null,
-					birthday: null,
-					remark: null,
-				}
+						"amount": null,
+						"memberStatus": null,
+						"plannedCompletionDate": null,
+						"productName":null,
+						"purchaseQuantity":1,
+						"purchaseTimes":null,
+						"remark": null,
+						"surplusTimes":null,
+				},
+				id:null
 			};
 		},
-		onLoad(option) {
-			this.type = option.type;
+		onLoad(options) {
+			this.type = options.type;
+			this.form.userId=options.userId
+			this.form.companyUserId=options.companyUserId;
 			console.log(this.type)
 			if (this.type == 'edit') {
-				this.docId = option.docId;
-				// this.getDocDetails();
+				this.id=options.id;
+				this.getServiceInfo();
 			}
 		},
 		methods: {
@@ -117,15 +117,16 @@
 			radioClick(item) {
 			        this.checked=item.id
 			      },
-			getDocDetails() {
+			getServiceInfo() {
 				var data = {
-					docId: this.docId
+					id: this.id
 				};
-				getDocDetails(data).then(
+				getServiceById(data).then(
 					res => {
 						if (res.code == 200) {
 							this.form = res.data;
-
+                            this.form.plannedCompletionDate=this.utils.timeFormat(res.data.plannedCompletionDate,'yyyy-mm-dd')
+							this.startDate=this.form.plannedCompletionDate
 						} else {
 							uni.showToast({
 								title: res.msg,
@@ -135,62 +136,65 @@
 					rej => {}
 				);
 			},
-			onChooseAvatar(e){
-				let {
-					avatarUrl
-				} = e.detail;
-				uni.uploadFile({
-					url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS', //仅为示例,非真实的接口地址
-					filePath: avatarUrl,
-					name: 'file',
-					formData: {
-						'user': 'test'  // 上传附带参数
-					},
-					success: (uploadFileRes) => {
-						this.user.avatar =JSON.parse(uploadFileRes.data).url
-					}
-				});
-			},
 			submit() {
-				// if (this.form.userName == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "姓名不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.idCard == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "身份证号不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.sex == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "性别不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.birthday == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "出生年月不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.type == "add") {
-				// 	this.addDoc()
-				// } else if (this.type == "edit") {
-				// 	this.editDoc()
-				// }
-                uni.navigateTo({
-                	url: '/pages_health/doc?type=edit&docId='
-                })
+				if (this.form.productName == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "名称不能为空",
+					});
+					return;
+				}
+				if (this.form.purchaseQuantity == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "数量不能为空",
+					});
+					return;
+				}
+				if (this.form.amount == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "金额不能为空",
+					});
+					return;
+				}
+				if (this.form.plannedCompletionDate == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "时间不能为空",
+					});
+					return;
+				}
+				if (this.form.purchaseTimes == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "购买次数不能为空",
+					});
+					return;
+				}
+				if (this.form.surplusTimes == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "剩余次数不能为空",
+					});
+					return;
+				}
+				if (this.form.memberStatus == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "会员情况不能为空",
+					});
+					return;
+				}
+				if (this.type == "add") {
+					this.saveService()
+				} else if (this.type == "edit") {
+					this.updateService()
+				}
+               
 			},
-			editDoc() {
-				editDoc(this.form).then(
+			updateService() {
+				updateService(this.form).then(
 					res => {
 						if (res.code == 200) {
 							uni.showToast({
@@ -198,7 +202,7 @@
 								title: "操作成功",
 							});
 							setTimeout(function() {
-								uni.$emit('refreshDoc');
+								uni.$emit('refreshBuyOrder');
 								uni.navigateBack({
 									delta: 1
 								})
@@ -213,8 +217,8 @@
 					rej => {}
 				);
 			},
-			addDoc() {
-				addDoc(this.form).then(
+			saveService() {
+				saveService(this.form).then(
 					res => {
 						if (res.code == 200) {
 							uni.showToast({
@@ -222,7 +226,7 @@
 								title: "操作成功",
 							});
 							setTimeout(function() {
-								uni.$emit('refreshDoc');
+								uni.$emit('refreshBuyOrder');
 								uni.navigateBack({
 									delta: 1
 								})
@@ -239,7 +243,7 @@
 			},
 			// 出生日期选择
 			bindDateChange: function(e) {
-				this.form.birthday = e.target.value
+				this.form.plannedCompletionDate = e.target.value
 			},
 		}
 	}
@@ -296,11 +300,15 @@
 						color: #222222;
 						flex-shrink: 0;
 					}
-
+                   
 					input {
 						text-align: right;
 					}
-               
+               .num-box{
+               	input{
+               		text-align: center !important;
+               	}
+               }
 					.form-input {
 						font-size: 30upx;
 						font-family: PingFang SC;

+ 733 - 0
pages_company/addUser.vue

@@ -0,0 +1,733 @@
+<template>
+	<view class="content">
+		<view class="inner">
+			<view class="form-box">
+				<text class="form-title">基本信息</text>
+				<view class="form-item justify-between">
+					<text class="label">头像</text>
+					<view class="right">
+						<image :src="form.avatar==null?maleurl:form.avatar" class="w90 h90"></image>
+						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						<button class="wx-head" type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
+						</button>
+					</view>
+				</view>
+				<view class="form-item">
+					<text class="label">姓名<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.username" placeholder="请输入姓名"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">性别<text class="color-price">*</text></text>
+					<view class="sex-box">
+						<view :class="form.sex==0?'sex-item active':'sex-item'"  @click="sexChange(0)" >
+							<u-icon name="man" :color="form.sex==0?'#008FD3':'#898E91'" size="20"></u-icon>
+							<text>男</text>
+						</view>
+						<view :class="form.sex==1?'sex-item active2':'sex-item'"  @click="sexChange(1)" >
+							<u-icon name="woman" :color="form.sex==1?'#FF5030':'#898E91'" size="20"></u-icon>
+							<text>女</text>
+						</view>
+					</view>
+				</view>
+				<view class="form-item">
+					<text class="label">出生年月<text class="color-price">*</text></text>
+					<picker class="birth-picker" mode="date"   @change="bindDateChange">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.birthdate" placeholder="请选择出生年月" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+				</view>
+				<view class="form-item">
+					<text class="label">手机号<text class="color-price">*</text></text>
+					<input maxlength="11" class="input-width" type="number" v-model="form.phone" placeholder="请输入手机号" placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">身份证号<text class="color-price">*</text></text>
+					<input maxlength="18" class="input-width" type="idcard" v-model="form.idCard" placeholder="请如实填写身份证号" placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">退休前工作单位<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.previousEmployer" placeholder="请输入工作单位"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">可支配收入<text class="color-price">*</text></text>
+					<input  class="input-width" type="digit" v-model="form.disposableIncome" placeholder="请输入支配收入"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">实际消费<text class="color-price">*</text></text>
+					<input class="input-width" type="digit" v-model="form.actualConsumption" placeholder="请输入实际消费"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">家庭地址及居住情况</text>
+				
+				<view class="form-item">
+					<text class="label">市区<text class="color-price">*</text></text>
+					<picker class="birth-picker" mode="region" level="city"  @change="bindCityChange">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.city" placeholder="请选择市区" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+					
+				</view>
+				<view class="form-item">
+					<text class="label">小区名称</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.residentialCommunity" placeholder="请输入小区名称"
+						placeholder-class="form-input" />
+				
+				</view>
+				<view class="form-item">
+					<text class="label">门牌</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.houseNumber" placeholder="请输入门牌号"
+						placeholder-class="form-input" />
+				
+				</view>
+				
+				
+				<view class="form-item">
+					<text class="label">面积</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.area" placeholder="请输入面积"
+						placeholder-class="form-input" />
+				</view>
+				
+                 <view class="form-item">
+					<text class="label">楼层</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.floor" placeholder="请输入楼层"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">家庭情况</text>
+				<view class="form-item">
+					<text class="label">伴侣</text>
+					<input class="input-width" type="text" v-model="form.partnerName" placeholder="请输入伴侣姓名"
+						placeholder-class="form-input" />
+				
+				</view>
+				<view class="form-item">
+					<text class="label">伴侣年龄</text>
+					<input class="input-width" type="number" v-model="form.partnerAge" placeholder="请输入伴侣年龄"
+						placeholder-class="form-input" />
+				
+				</view>
+				
+				
+				<view class="form-item">
+					<text class="label">子辈单位</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.partnerEmployer" placeholder="请输入子辈工作单位"
+						placeholder-class="form-input" />
+				</view>
+				
+				 <view class="form-item">
+					<text class="label">孙辈学校</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.grandchildrenSchool" placeholder="请输入所在学校"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">会员情况</text>
+				<view class="form-item justify-between">
+					<text class="label">是否是会员</text>
+				<radio-group style="display: flex;align-items: center;">
+					<label style="margin-right: 50upx;">
+						<radio @click="radioClick(1)" value="1" :checked="form.isMember==1"
+							style="margin-right: 16upx;" />
+						<text class="sex-text">是</text>
+					</label>
+					<label>
+						<radio @click="radioClick(0)" value="0" :checked="form.isMember==0"
+							style="margin-right: 16upx;" />
+						<text class="sex-text">否</text>
+					</label>
+				</radio-group>
+				</view>
+				<view class="form-item">
+					<text class="label">会员分类</text>
+					<picker class="birth-picker" mode="selector"  @change="bindMemberChange($event,tags)" :range="tags" range-key="dictLabel">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.memberLevel" placeholder="请选择会员分类" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+				
+				</view>
+				
+				
+				<view class="form-item">
+					<text class="label">加入时间</text>
+					<picker class="birth-picker" mode="date"   @change="bindJoinChange">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.joinTime" placeholder="请选择加入时间" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+				</view>
+				
+				 <view class="form-item">
+					<text class="label">到期时间</text>
+					<picker class="birth-picker" mode="date"   @change="bindEndChange">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.expiryTime" placeholder="请选择到期时间" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+				</view>
+				<view class="form-item">
+					<text class="label">管理月份</text>
+					<picker class="birth-picker" mode="date" fields="month" @change="bindMonthChange">
+						<view class="right-box">
+							<view class="input-box">
+								<input type="text" :value="form.managementMonth" placeholder="请选择管理月份" placeholder-class="form-input" disabled="disabled" />
+							</view>
+							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+						</view>
+					</picker>
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">特殊情况</text>
+				<view class="form-item">
+					<text class="label">职位</text>
+					<input class="input-width" type="text" v-model="form.position" placeholder="请输入职位"
+						placeholder-class="form-input" />
+				
+				</view>
+				<view class="form-item">
+					<text class="label">癖好</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.hobbies" placeholder="请输入癖好"
+						placeholder-class="form-input" />
+				
+				</view>
+				
+				
+				<view class="form-item">
+					<text class="label">平日喜好</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.specialties" placeholder="请输入平日喜好"
+						placeholder-class="form-input" />
+				</view>
+				
+				 <view class="form-item">
+					<text class="label">信仰</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.faith" placeholder="请输入信仰"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">担忧</text>
+					<input maxlength="10" class="input-width" type="text" v-model="form.concerns" placeholder="请输入担忧"
+						placeholder-class="form-input" />
+				</view>
+			</view>
+			<view class="form-box">
+				<text class="form-title">其他<text class="color-price">*</text></text>
+				<view class="form-item">
+				<!-- 	<text class="label">备注</text> -->
+					<textarea maxlength="200" class="form-textarea" v-model="form.problemsToSolve" placeholder="请输入用户想解决的问题"  placeholder-class="textarea-input" />
+				</view>
+				<view class="form-item">
+					<!-- <text class="label">备注</text> -->
+					<textarea maxlength="200" class="form-textarea" v-model="form.healthSuggestions" placeholder="请输入健康管理师对用户的建议"   placeholder-class="textarea-input"/>
+				</view>
+			</view>
+		
+		</view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">保存</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getInfo,updateInfo,deleteInfo,addInfo,getMember} from '@/api/health.js'
+	import {
+		getDocDetails,
+		addDoc,
+		editDoc
+	} from '@/api/doc.js'
+	export default {
+		data() {
+			return {
+				type: null,
+				patientId: null,
+				famaleurl:"/static/images/health/female_profile.png",
+				maleurl:"/static/images/health/my_heads.png",
+				checked:1,
+				array:[
+					{id:1,name:'是'},
+					{id:0,name:'否'},
+					],
+				tags: [],
+				 municipalities: ['北京市', '上海市', '天津市', '重庆市'],
+				isAdd:null,
+				form: {
+					"username": null,
+					avatar:null,
+					"sex":0, 
+					"birthdate": null, 
+					"age": 0,
+					"phone":  null,
+					"idCard":  null,
+					"previousEmployer":  null,
+					"disposableIncome": null,
+					"actualConsumption":  null,
+					"city":  null,
+					"residentialCommunity": null,
+					"houseNumber": null, 
+					"area":  null, 
+					"floor":  null,
+					"partnerName":  null,
+					"partnerAge":  null,
+					"partnerEmployer":  null,
+					"grandchildrenSchool": null,
+					"isMember":  1, 
+					"memberLevel":  null, 
+					"joinTime": null,
+					"expiryTime": null,
+					"managementMonth":null,
+					"position":null,
+					"hobbies": null,
+					"specialties": null,
+					"faith": null, 
+					"concerns": null,
+					"problemsToSolve": null,
+					"healthSuggestions": null,
+				}
+			};
+		},
+		onLoad(options) {
+			this.type = options.type;
+			this.userId=options.userId;
+			this.companyUserId=options.companyUserId;
+			this.form.userId=options.userId;
+			this.form.companyUserId=options.companyUserId;
+			if (this.type == 'edit') {
+				this.getInfo();
+			}
+			this.getMember()
+		},
+		methods: {
+			sexChange(type) {
+				this.form.sex = type
+			},
+			radioClick(id) {
+			        this.form.isMember=id
+			      },
+			getMember(){
+				getMember().then(
+					res => {
+						if (res.code == 200) {
+							this.tags= res.data;
+						    
+						} else {
+							uni.showToast({
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		getInfo() {
+			var data = {
+				userId: this.userId
+			};
+			getInfo(data).then(
+				res => {
+					if (res.code == 200) {
+		                this.form = res.data;
+					} else {
+						uni.showToast({
+							title: res.msg,
+						});
+					}
+				},
+				rej => {}
+			);
+		},
+			onChooseAvatar(e){
+				// 处理用户取消的情况
+				    if (e.detail.errMsg && e.detail.errMsg.includes('cancel')) {
+				      console.log('选择头像已取消')
+				      return
+				    }
+				let {
+					avatarUrl
+				} = e.detail;
+				uni.uploadFile({
+					url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS', //仅为示例,非真实的接口地址
+					filePath: avatarUrl,
+					name: 'file',
+					formData: {
+						'user': 'test'  // 上传附带参数
+					},
+					success: (uploadFileRes) => {
+						this.form.avatar =JSON.parse(uploadFileRes.data).url
+					}
+				});
+			},
+			submit() {
+				if (this.form.username == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "姓名不能为空",
+					});
+					return;
+				}
+				if (this.form.phone == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "手机号不能为空",
+					});
+					return;
+				}
+				if (this.form.idCard == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "身份证号不能为空",
+					});
+					return;
+				}
+				if (this.form.sex == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "性别不能为空",
+					});
+					return;
+				}
+				if (this.form.birthdate == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "出生年月不能为空",
+					});
+					return;
+				}
+				if (this.form.city == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "市区不能为空",
+					});
+					return;
+				}
+				if (this.form.problemsToSolve == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "用户问题不能为空",
+					});
+					return;
+				}
+				if(this.type=="add"){
+					this.addDoc()
+				}
+				else if(this.type=="edit"){
+					this.editDoc()
+				}
+                // uni.navigateTo({
+                // 	url: '/pages_health/doc?type=edit&docId='
+                // })
+			},
+	editDoc() {
+		updateInfo(this.form).then(
+			res => {
+				if (res.code == 200) {
+					uni.showToast({
+						icon: 'success',
+						title: "操作成功",
+					});
+					setTimeout(function() {
+						uni.$emit('refreshDoc');
+						uni.navigateBack({
+							delta: 1
+						})
+					}, 500);
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.msg,
+					});
+				}
+			},
+			rej => {}
+		);
+	},
+	addDoc() {
+		addInfo(this.form).then(
+			res => {
+				if (res.code == 200) {
+					uni.showToast({
+						icon: 'success',
+						title: "操作成功",
+					});
+					setTimeout(function() {
+						uni.$emit('refreshDoc');
+						uni.navigateBack({
+							delta: 1
+						})
+					}, 500);
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.msg,
+					});
+				}
+			},
+			rej => {}
+		);
+	},
+			// 出生日期选择
+			bindDateChange: function(e) {
+				this.form.birthdate = e.target.value
+			},
+			//市区
+			bindCityChange:function(e) {
+				const region = e.detail.value; // 格式: [省, 市, 区]
+				      let displayText = '';
+				      // 处理直辖市重复问题
+				      if (this.municipalities.includes(region[0])) {
+				        // 直辖市:省和市名称相同,只显示一次
+				        // 格式变为 "北京市 海淀区" 而非 "北京市 北京市 海淀区"
+				        displayText = `${region[0]}`;
+				      } else {
+				        // 非直辖市:正常显示省市区
+				        displayText = region;
+				      }
+				      this.form.city = displayText;
+				
+				},
+				//会员情况
+				// bindIsMemberChange:function(e) {
+				// 	this.form.isMember = e
+				// 	},
+				//会员分类
+				bindMemberChange:function(e,list) {
+					var index=e.target.value
+					this.form.memberLevel = list[e.target.value].dictLabel
+					},
+					//加入时间
+					bindJoinChange:function(e) {
+						this.form.joinTime = e.target.value
+						},
+						//到期时间
+						bindEndChange:function(e) {
+							this.form.expiryTime = e.target.value
+							},
+							//月份
+							bindMonthChange:function(e) {
+								this.form.managementMonth = e.target.value
+								},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+	}
+
+	.content {
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+
+		.inner {
+			// height: calc(100% - 120upx);
+			padding: 20upx;
+
+			.form-box {
+				padding: 0 30upx;
+				background: #FFFFFF;
+				border-radius: 16upx;
+				margin-bottom: 20upx;
+
+				.form-title {
+					font-family: PingFang SC;
+					font-weight: 600;
+					font-size: 40rpx;
+					color: #222426;
+					text-align: left;
+					padding: 30rpx 0;
+					display: block;
+				}
+
+				.form-item {
+					padding: 30upx 0;
+					display: flex;
+					align-items: flex-start;
+					border-bottom: 1px solid #F1F1F1;
+
+					&:last-child {
+						border-bottom: none;
+					}
+        
+					.label {
+						width: 300upx;
+						text-align: left;
+						font-size: 32upx;
+						line-height: 44upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						flex-shrink: 0;
+					}
+
+					input {
+						text-align: right;
+					}
+               
+					.form-input {
+						font-size: 30upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						text-align: right;
+					}
+
+					.form-item-tag{
+						margin-right: 16rpx;
+						.tag{
+							border-radius: 8rpx 8rpx 8rpx 8rpx;
+							border: 2rpx solid #ECECEC;
+							display: flex;
+							align-items: center;
+							padding: 24rpx;
+							font-family: PingFang SC;
+							font-weight: 400;
+							font-size: 24rpx;
+							&.active{
+								background: #F0FAFF;
+								border: 2rpx solid #008FD3;
+								color: #008FD3;
+							}
+						}
+						
+						
+						
+					}
+					.right{
+						display: flex;
+						align-items: center;
+						position: relative;
+						image{
+							border-radius: 50%;
+						}
+						.wx-head{
+							position: absolute;
+							width: 140upx;
+							height: 80upx;
+							opacity: 0;
+						}
+					}
+					.sex-box{
+						flex:1;
+						display: flex;
+						align-items: center;
+						justify-content: flex-end;
+						.sex-item{
+							width: 146rpx;
+							height: 64rpx;
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							background: #F5F7FA;
+							border-radius: 32rpx 32rpx 32rpx 32rpx;
+							margin-left: 16rpx;
+							.u-icon__icon{
+								margin: 0;
+							}
+							text{
+								// font-family: PingFang SC, PingFang SC;
+								font-weight: 400;
+								font-size: 28rpx;
+								color: #898E91;
+								margin-left: 12rpx;
+							}
+							&.active{
+								background: #EBF8FF;
+								text{
+									color:#008FD3
+								}
+							}
+							&.active2{
+								background: #FCF0E7;
+								text{
+									color:#FF5030
+								}
+							}
+						}
+					}
+					.form-textarea{
+						font-size: 30upx;
+						// color: #999999;
+						height: 100upx;
+						padding: 4upx 0;
+					}
+					 .textarea-input{
+						 color: #999999;
+					 }
+					.birth-picker {
+						flex: 1;
+						display: flex;
+						align-items: center;
+						
+						.right-box{
+							width: 100%;
+							display: flex;
+							align-items: center;
+							.input-box{
+								// width: 470upx;
+							}
+							.arrow{
+								width: 13upx;
+								height: 23upx;
+								margin-left: 20upx;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.btn-box {
+			height: 120upx;
+			padding: 0 30upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			// position: fixed;
+			// width: 90%;
+			// bottom: 0;
+			// left: 50%;
+			// transform: translate(-50%,-50%);
+			// background: #FFFFFF;
+			.sub-btn {
+				width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3 ;
+				border-radius: 44upx;
+				margin-bottom: 40upx;
+			}
+		}
+	}
+</style>

+ 171 - 87
pages_health/buyOrder.vue → pages_company/buyOrder.vue

@@ -18,16 +18,17 @@
 			</view>
 		</view>
 		<view class="consu-list">
-			<mescroll-body top="88upx" ref="mescrollRef">
+			<mescroll-body top="88upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+				<view v-if="orderStatusValue==0">
 				<view v-for="(item,index) in dataList" :key="index" class="item" >
 					<view class="item-top">
 						<view class="item-title">
-							<view class="ask-text">{{item.name}}</view>
-							<view class="fs28">X {{item.num}}</view>
+							<view class="ask-text">{{item.productName}}</view>
+							<view class="fs28">X {{item.purchaseQuantity}}</view>
 						</view>
-						<view class="ask-time">购买次数:{{item.num}}</view>
-						<view class="ask-time">购买时间:{{item.time}}</view>
-						<view class="ask-time">备注:{{item.remark}}</view>
+						<view class="ask-time">购买次数:{{item.purchaseTimes}}</view>
+						<view class="ask-time">购买时间:{{utils.timeFormat(item.createTime,'yyyy-mm-dd hh:MM')}}</view>
+						<view class="ask-time">备注:{{item.remark||''}}</view>
 					</view>
 					<view class="bottom-box">
 						<view class="amount-paid">
@@ -38,11 +39,39 @@
 							</view>
 						</view>
 						<view class="btn-box">
-							<view class="btn cancel" @click="cancel(item)">删除</view>
-							<view class="btn pay" @click="showDetail(item)">编辑</view>
+							<view class="btn cancel" @click="deleteService(item)">删除</view>
+							<view class="btn pay" @click="showDetail(orderStatusValue,item)">编辑</view>
 						</view>
 					</view>
 				</view>
+				</view>
+				<view v-if="orderStatusValue==1">
+				<view v-for="(item,index) in dataList" :key="index" class="item" >
+					<view class="item-top">
+						<view class="item-title">
+							<view class="ask-text">{{item.product}}</view>
+							<!-- <view class="fs28">X {{item.freeServiceTimes}}</view> -->
+						</view>
+						<view class="ask-time">服务次数:{{item.freeServiceTimes}}</view>
+						<view class="ask-time">购买时间:{{utils.timeFormat(item.createTime,'yyyy-mm-dd hh:MM')}}</view>
+						<view class="ask-time">备注:{{item.remark||''}}</view>
+					</view>
+					<view class="bottom-box">
+						<view class="amount-paid">
+							<text class="label">订单金额:</text>
+							<view class="price-box">
+								<view class="unit">¥</view>
+								<view class="num">{{item.price.toFixed(2)}}</view>
+							</view>
+						</view>
+						<view class="btn-box">
+							<view class="btn cancel" @click="deleteCompetitor(item)">删除</view>
+							<view class="btn pay" @click="showDetail(orderStatusValue,item)">编辑</view>
+						</view>
+					</view>
+				</view>
+				</view>
+				<view class="h160"></view>
 			</mescroll-body>
 		</view>
 		<view class="btn-box2">
@@ -55,15 +84,15 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getServiceList,getCompetitorList,deleteCompetitor,deleteService} from '@/api/companyUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
 				orderStatus:[
-					{name:"购买服务信息",val:"0"},
-					{name:"购买服务信息",val:"1"},
+					{name:"购买服务信息",val:0},
+					{name:"购买竞品信息",val:1},
 				],
 				orderStatusValue:0,
 				mescroll:null,
@@ -77,54 +106,125 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{orderId:1, name:'极诺泰1',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,},
-					{orderId:2, name:'极诺泰2',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,},
-					{orderId:3, name:'极诺泰3',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,}
-				],
-				dataList2: [
-					{orderId:1, name:'竞品1',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,},
-					{orderId:2, name:'竞品2',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,},
-					{orderId:3, name:'竞品3',num:12,time:'2025-2-20 10:29',remark:'请尽快发货',amount:340.00,}
-				]
+				dataList: [],
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId;
+			this.companyUserId=options.companyUserId;
+			uni.$on('refreshBuyOrder', () => {
+				this.mescroll.resetUpScroll()
+			})
 		},
 		methods: {
-			pay(item){
-				uni.navigateTo({
-					url: '/pages_/doctor/paymentOrder?orderId='+item.orderId
-				})
-			},
 			navgetTo(index){
 				uni.navigateTo({
-					url: index==0?'/pages_health/addServe':'/pages_health/addCompetitors'
+					url: index==0?'/pages_company/addServe?type=add&userId='+this.userId+"&companyUserId="+this.companyUserId:'/pages_company/addCompetitors?type=add&userId='+this.userId+"&companyUserId="+this.companyUserId
 				})
 			},
-			cancel(item){
+			// tab切换
+			orderStatusChange(item) {
+				this.orderStatusValue = item.val
+				this.mescroll.resetUpScroll()
+			},
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			/*下拉刷新的回调 */
+			downCallback(mescroll) {
+				mescroll.resetUpScroll()
+			},
+			upCallback(page) {
+				if(this.orderStatusValue==0){
+					this.getServiceList(page)
+				}else if(this.orderStatusValue==1){
+					this.getCompetitorList(page)
+				}
+			},
+			getServiceList(page){
+				//联网加载数据
+				var that = this;
+				var data = {
+					userId:this.userId,
+					// status:this.orderStatusValue,
+					pageNum: page.num,
+					pageSize: page.size
+				};
+				getServiceList(data).then(res => {
+					if(res.code==200){
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data.list; 
+							
+						} else {
+							that.dataList = that.dataList.concat(res.data.list);
+							 
+						}
+						that.mescroll.endBySize(res.data.list.length, res.data.total);
+						
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
+			},
+			getCompetitorList(page){
+				//联网加载数据
+				var that = this;
+				var data = {
+					// status:this.orderStatusValue,
+					userId:this.userId,
+					// companyUserId:this.companyUserId,
+					pageNum: page.num,
+					pageSize: page.size
+				};
+				getCompetitorList(data).then(res => {
+					if(res.code==200){
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data.list; 
+							
+						} else {
+							that.dataList = that.dataList.concat(res.data.list);
+							 
+						}
+						that.mescroll.endBySize(res.data.list.length, res.data.total);
+						
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
+			},
+			//删除商品
+			deleteService(item){
 				var that=this;
 				uni.showModal({
 				    title: '提示',
-				    content: '确定取消订单吗',
+				    content: '确定删除商品订单吗',
 				    success: function (res) {
 				        if (res.confirm) {
 							var data = {
-								orderId:item.orderId
+								id:item.id
 							};
-							cancelOrder(data).then(res => {
+							deleteService(data).then(res => {
 								if(res.code==200){
 									uni.showToast({
 										icon:'success',
-										title: '订单已取消',
+										title: '订单已删除',
 									});
 									 that.mescroll.resetUpScroll()
 								}else{
@@ -140,57 +240,41 @@
 				    }
 				});
 			},
-			// tab切换
-			orderStatusChange(item) {
-				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
-				this.mescroll.resetUpScroll()
-			},
-			mescrollInit(mescroll) {
-				this.mescroll = mescroll;
-			},
-			/*下拉刷新的回调 */
-			downCallback(mescroll) {
-				mescroll.resetUpScroll()
-			},
-			upCallback(page) {
-				//联网加载数据
-				var that = this;
-				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
-				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
-						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+			//删除竞品
+			deleteCompetitor(item){
+				var that=this;
+				uni.showModal({
+				    title: '提示',
+				    content: '确定删除竞品订单吗',
+				    success: function (res) {
+				        if (res.confirm) {
+							var data = {
+								id:item.id
+							};
+							deleteCompetitor(data).then(res => {
+								if(res.code==200){
+									uni.showToast({
+										icon:'success',
+										title: '订单已删除',
+									});
+									 that.mescroll.resetUpScroll()
+								}else{
+									uni.showToast({
+										icon:'none',
+										title: res.msg,
+									});
+								}
+							});
+				        } 
+						else if (res.cancel) {
+				        }
+				    }
+				});
 			},
-			showDetail(item) {
-				if(item.orderType==1){
-					uni.navigateTo({
-						url: '/pages_doctor/doctorOrderIM?orderId='+item.orderId
-					})
-				}
+			showDetail(index,item) {
+				uni.navigateTo({
+					url: index==0?'/pages_company/addServe?type=edit&id='+item.id+'&userId='+this.userId+"&companyUserId="+this.companyUserId:'/pages_company/addCompetitors?type=edit&id='+item.id+'&userId='+this.userId+"&companyUserId="+this.companyUserId
+				})
 			}
 		}
 	}

+ 82 - 40
pages_company/clientDetail.vue

@@ -7,14 +7,14 @@
 						<image :src="user.avatar==null?'../static/images/health/my_heads.png':user.avatar" mode="aspectFill"></image>
 					</view>
 					<view class="name-phone">
-						<view class="name">{{user.nickName}}</view>
+						<view class="name">{{user.username||'微信用户'}}</view>
 						<view class="phone-box" v-if="user!=null">
 							<image class="w32 h32" src="../static/images/company/address_icon.png" mode=""></image>
 							<view class="address">
-								重庆
+								{{user.city||'-'}}
 							</view>
 							<view class="phone">
-								{{utils.parsePhone(user.phonenumber)}}
+								{{user.phone?utils.parsePhone(user.phone):'-'}}
 							</view>
 						</view>
 					</view>
@@ -37,42 +37,42 @@
 				</view>
 				<view class="demands">
 					<view class="title">健康诉求</view>
-					<view class="text">希望能够调理好糖尿病</view>
+					<view class="text">{{user.problemsToSolve||'-'}}</view>
 				</view>
 				
 			</view>
 			<view class="used-tools2">
 				<view class="title">管理</view>
 				<view class="tools-list">
-					<view class="item" @click="navgetTo('/pages_health/doc')">
+					<view class="item" @click="toHealth()">
 						<image src="../static/images/company/health_records_icon.png" mode=""></image>
 						<text class="text">健康档案</text>
 					</view>
-					<view class="item" @click="navgetTo('')">
+					<view class="item" @click="toReport()">
 						<image src="../static/images/company/physical_examination_icon.png" mode=""></image>
 						<text class="text">体检信息</text>
 					</view>
-					<view class="item" @click="navgetTo('/pages_company/executionRecord')">
+					<view class="item" @click="toRecord()">
 						<image src="../static/images/company/execution_record_icon.png" mode=""></image>
 						<text class="text">执行记录</text>
 					</view>
-					<view class="item" @click="navgetTo('/pages_company/returnRecord')">
+					<view class="item" @click="navgetTo()">
 						<image src="../static/images/company/return_records_icon.png" mode=""></image>
 						<text class="text">回访记录</text>
 					</view>
-					<view class="item" @click="navgetTo('/pages_health/buyOrder')">
+					<view class="item" @click="toOrder()">
 						<image src="../static/images/company/consumables_mall_icon.png" mode=""></image>
 						<text class="text">购买信息</text>
 					</view>
-					 <view class="item" @click="navgetTo('')">
+					 <view class="item" @click="toData()">
 					 	<image src="../static/images/company/comparison_indicators_icon.png" mode=""></image>
 					 	<text class="text">指标对比</text>
 					 </view>
-					 <view class="item" @click="navgetTo('/pages_company/testRecord')">
+					 <view class="item" @click="navgetTo()">
 					 	<image src="../static/images/company/evaluation_record_icon.png" mode=""></image>
 					 	<text class="text">测评记录</text>
 					 </view>
-					 <view class="item" @click="navgetTo('')">
+					 <view class="item" @click="navgetTo()">
 					 	<image src="../static/images/company/follow_up_records_icon.png" mode=""></image>
 					 	<text class="text">跟进记录</text>
 					 </view>
@@ -89,18 +89,20 @@
 
 <script>
 	import {getUserInfo,getQrImg} from '@/api/companyUser'
+	import {getInfo,homeInfo} from '@/api/health.js'
 	export default {
 		data() {
 			return {
 				statusBarHeight:'',
 				top:0,
-				user:{
-					nickName:'健康管家小左',
-					phonenumber:'13996660261',
-					deptName:'测试企业',
-					avatar:null
-				},
-				 // user:null,
+				// user:{
+				// 	nickName:'健康管家小左',
+				// 	phonenumber:'13996660261',
+				// 	deptName:'测试企业',
+				// 	avatar:null
+				// },
+				 user:null,
+				 info:null
 			};
 		},
 		computed: {
@@ -110,14 +112,34 @@
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
-			console.log("onload")
+		onLoad(options) {
+			this.userId=options.userId;
+			this.companyId=options.companyId;
+			this.companyUserId=options.companyUserId;
+			this.getUserInfo()
 		},
 		onShow() {
 			console.log("onshow")
-			// this.getUserInfo()
+			
+			// this.getHome()
 		},
 		methods: {
+			getUserInfo(){
+				// var data={token:uni.getStorageSync('CompanyUserToken')}
+				getInfo({userId:this.userId}).then(
+					res => {
+						if(res.code==200){
+							  this.user=res.data;
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
 			alipay(){
 				// var url="http://alipay.yjf.runtzh.com/#/?companyId="+this.user.companyId+"&companyUserId="+this.user.userId
 				// uni.setClipboardData({
@@ -135,6 +157,31 @@
 					url:'/pages_company/alipayImg'
 				})
 			},
+			toHealth(){
+				
+				uni.navigateTo({
+					url:'/pages_company/addDoc?userId='+this.userId+"&companyUserId="+this.companyUserId
+				})
+			},
+			toReport(){
+				
+				uni.navigateTo({
+					url:'/pages_user/user/reportList?userId='+this.userId+"&companyUserId="+this.companyUserId
+				})
+			},
+			toRecord(){
+				
+				uni.navigateTo({
+					url:'/pages_company/executionRecord?userId='+this.userId+"&companyUserId="+this.companyUserId
+				})
+			},
+			toData(){
+				
+				uni.navigateTo({
+					url:'/pages_user/user/dataAnalysis?userId='+this.userId+"&companyUserId="+this.companyUserId
+				})
+			},
+			
 			toCard(){
 				uni.navigateTo({
 					url:'/pages_company/card?cardId='+this.user.cardId
@@ -152,7 +199,7 @@
 			},
 			toOrder(){
 				uni.navigateTo({
-					url:'/pages_company/storeOrder?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+					url:'/pages_company/buyOrder?userId='+this.user.userId+"&companyUserId="+this.companyUserId
 				})
 			},
 			toPackage(){
@@ -175,18 +222,13 @@
 					url:'/pages_company/order/coupon'
 				})
 			},
-			getUserInfo(){
-				var data={token:uni.getStorageSync('CompanyUserToken')}
-				getUserInfo(data).then(
+			
+			getHome(){
+				// var data={token:uni.getStorageSync('CompanyUserToken')}
+				homeInfo({userId:this.userId}).then(
 					res => {
 						if(res.code==200){
-							  this.user=res.data;
-						}
-						else if(res.code==403){
-							uni.setStorageSync('CompanyUserToken',null);
-							uni.navigateBack({
-								delta:-1
-							})			
+							  this.info=res.data;
 						}else{
 							uni.showToast({
 								icon:'none',
@@ -218,13 +260,13 @@
 			 
 			// 跳转页面
 			navgetTo(url) {
-				// this.utils.isLogin().then(res => {
-				// 	if(res){
-						uni.navigateTo({
-							url: url
-						})
-				// 	}
-				// })
+				this.utils.isLogin().then(res => {
+					// if(res){
+					// 	uni.navigateTo({
+					// 		url: url+'?companyId='+this.companyId+"&companyUserId="+this.companyUserId
+					// 	})
+					// }
+				})
 			},
 		}
 	}

+ 178 - 69
pages_company/clientList.vue

@@ -35,21 +35,39 @@
 						</view>
 					</view>
 					<view class="btn-box">
-						<view  class="btn-proxy" @click.stop="showDetail(item)">
+						<view  class="btn-proxy" @click.stop="openEditMoney(1)">
 							设置代理价格
 						</view>
-						<view  class="btn-sale" @click.stop="showDetail(item)">
+						<view  class="btn-sale" @click.stop="openEditMoney(2)">
 							设置销售价格
 						</view>
 					</view>
 				</view>
+				
 			</view>
+			<view class="h20"></view>
 		</mescroll-body>
+		<view class="popup-box" v-if="editShow">
+		  <view class="info-mask"  @click.stop="cancelEditMoney()" ></view>
+		  <view class="info-form" >
+				<view class="title">{{type==1?'设置代理价格':'设置销售价格'}}</view>
+				<view class="form-box">
+					<view class="form-item">
+						<text class="label">{{type==1?'代理价格':'销售价格'}}</text>
+						<input type="text" v-model="proxyPrice" maxlength="10" placeholder="请输入价格" class="form-input" />
+					</view>
+				</view>
+				<view class="btns">
+					<view class="sub-btn" @click.stop="confirmEditMoney()">提交</view>
+				</view>
+		  </view>
+		</view>
 	</view>
 </template>
 
 <script>
 	import {getCompanyStoreOrderList} from '@/api/storeOrder'
+	import {getUserInfo} from '@/api/companyUser'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
@@ -57,6 +75,9 @@
 			return {
 				searchKey:"",
 				mescroll:null,
+				type:0,
+				editShow:false,
+				proxyPrice:0,
 				// 上拉加载的配置
 				upOption: {
 					onScroll:true,
@@ -74,8 +95,8 @@
 				// 列表数据
 				dataList: [
 					{name:'西航宇',phone:'18056647845',proxyPrice:0.8,salePrice:0.6,createTime:'2025-06-10 14:20',img:'/static/images/health/my_heads.png'},
-					{name:'蓝西',phone:'18056647845',proxyPrice:1.0,salePrice:0.8,createTime:'2025-07-10 14:20',img:'/static/images/health/female_profile.png'}
-				],
+				]
+				
 			};
 		},
 		onLoad(options) {
@@ -91,6 +112,62 @@
 				this.searchKey=e.detail.value;
 				this.mescroll.resetUpScroll()
 			},
+			// getUserInfo(){
+			// 	var data={token:uni.getStorageSync('CompanyUserToken')}
+			// 	getUserInfo(data).then(
+			// 		res => {
+			// 			if(res.code==200){
+			// 				  this.user=res.data;
+			// 			}
+			// 			else if(res.code==403){
+			// 				uni.setStorageSync('CompanyUserToken',null);
+			// 				uni.navigateBack({
+			// 					delta:-1
+			// 				})			
+			// 			}else{
+			// 				uni.showToast({
+			// 					icon:'none',
+			// 					title: res.msg,
+			// 				});
+			// 			}
+			// 		},
+			// 		rej => {}
+			// 	);
+			// },
+			openEditMoney(value){
+				this.type=value
+				this.editShow = true
+			},
+			cancelEditMoney(){
+				this.editShow = false
+			},
+			confirmEditMoney(){
+				if(parseFloat(this.proxyPrice)>=0){
+					var that=this;
+					// var data={orderId:this.order.id,token:uni.getStorageSync('CompanyUserToken'),money:this.payMoney}
+					// editOrderMoney(data).then(
+					// 	res => {
+					// 		if(res.code==200){
+					// 			this.editShow = false
+					// 			this.getMyStoreOrderById();
+					// 		}else{
+					// 			uni.showToast({
+					// 				icon:'none',
+					// 				title: res.msg,
+					// 			});
+					// 		}
+					// 	},
+					// 	rej => {}
+					// );
+					
+				}
+				else{
+					uni.showToast({
+						icon:'none',
+						title: "价格应大于等于0",
+					});
+				}
+			},
 			mescrollInit(mescroll) {
 				this.mescroll = mescroll;
 			},
@@ -108,74 +185,13 @@
 					page: page.num,
 					pageSize: page.size
 				};
-				// getCompanyStoreOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
-						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
 			},
 			showDetail(item) {
-				uni.navigateTo({
-					url: './clientDetail?id=' 
-				})
+				// uni.navigateTo({
+				// 	url: './clientDetail?companyId='+this.companyId+"&companyUserId="+this.companyUserId
+				// })
 			},
-			// cancel(item){
-			// 	var that=this;
-			// 	uni.showModal({
-			// 	    title: '提示',
-			// 	    content: '确定取消订单吗',
-			// 	    success: function (res) {
-			// 	        if (res.confirm) {
-			// 				var data = {
-			// 					orderId:item.id
-			// 				};
-			// 				cancelOrder(data).then(res => {
-			// 					if(res.code==200){
-			// 						uni.showToast({
-			// 							icon:'success',
-			// 							title: "操作成功",
-			// 						});
-			// 						 that.mescroll.resetUpScroll()
-			// 					}else{
-			// 						uni.showToast({
-			// 							icon:'none',
-			// 							title: res.msg,
-			// 						});
-			// 					}
-			// 				});
-			// 	        } 
-			// 			else if (res.cancel) {
-			// 	        }
-			// 	    }
-			// 	});
-			// },
-			// pay(item) {
-			// 	 uni.navigateTo({
-			// 	 	url: '../shopping/paymentOrder?orderId='+item.id
-			// 	 })
-			// },
-			// 查看物流
-			// showDelivery(item) {
-			// 	uni.navigateTo({
-			// 		url: './storeOrderDelivery?orderId='+item.id
-			// 	})
-			// }
+			
 			
 		}
 	}
@@ -251,6 +267,98 @@
 		text-align: left;
 		padding:22rpx ;
 	}
+	.popup-box{
+		position: fixed;
+		top: 0;
+		right: 0;
+		left: 0;
+		bottom: 0;
+		z-index: 999;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		.info-mask {
+			position: fixed;
+			top: 0;
+			right: 0;
+			bottom: 0;
+			left: 0;
+			background-color: rgba($color: #000000, $alpha: 0.5);
+			z-index: 999;
+		}
+		.info-form {
+			z-index: 1000;
+			width: 650rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			padding: 0 30upx;
+			background: #FFFFFF;
+			border-radius: 16upx;
+			.title{
+				padding: 30rpx 0rpx 15rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				font-size: 40upx;
+				line-height: 44upx;
+				font-family: PingFang SC;
+				color: #222222;
+			}
+			.form-box{
+				width: 100%;
+				.form-item{
+					padding: 30upx 0;
+					display: flex;
+					align-items: flex-start;
+					border-bottom: 1px solid #F1F1F1;
+					.label{
+						width: 160upx;
+						text-align: left;
+						font-size: 30upx;
+						line-height: 44upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						flex-shrink: 0;
+					}
+					input{
+						text-align: left;
+					}
+					.form-input{
+						font-size: 34upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						text-align: left;
+					}
+					 
+				}
+			}
+			.btns{
+				width: 100%;
+				height: 120upx;
+				padding: 0 30upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				.sub-btn{
+					width: 100%;
+					height: 88upx;
+					line-height: 88upx;
+					text-align: center;
+					font-size: 30upx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #FFFFFF;
+					background: #008FD3;
+					border-radius: 44upx;
+				}
+			}
+			
+		}
+	}
 	.client-list{
 		.item{
 			background: #fff;
@@ -366,6 +474,7 @@
 					border-radius: 30rpx 30rpx 30rpx 30rpx;
 				}
 			}
+		
 		}
 	}
 	

+ 522 - 0
pages_company/complaintDetail.vue

@@ -0,0 +1,522 @@
+<template>
+	<view class="content">
+			    <view class="datebox">
+					<!-- <view class="form-item">
+						<text class="label">日期</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{form.completeTime}}
+							</view>
+						</view>
+						<picker class="birth-picker" mode="date"   @change="bindDateChange">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.dueDate" placeholder="请选择日期" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker>
+					</view> -->
+					<view class="form-item">
+						<text class="label">创建时间</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{utils.timeFormat(form.createTime,'yyyy-mm-dd hh:MM:ss')}}
+							</view>
+						</view>
+					</view>
+					<view class="form-item">
+						<text class="label">联系方式</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{form.contactPhone}}
+							</view>
+						</view>
+					</view>
+					
+					<view class="form-item">
+						<text class="label">处理状态</text>
+						<picker class="birth-picker"  mode="selector"  @change="bindStatusChange($event,tags)" :range="tags" range-key="dictLabel">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.statusName" placeholder="请选择状态" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker>
+					</view>
+			    </view>
+				
+			      <view class="datebox2">
+					  <view class="bold">投诉内容</view>
+					  <view class="textinput">
+					  	<textarea  v-model="form.content" auto-height maxlength='500' placeholder="请输入事项情况" disabled="true"/>
+					  </view>
+					  </view>
+		<view class="btn-box">
+			<view  class="sub-btn" @click="submit()">
+				确定
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getComplaintById,updateComplaint,getCategory} from '@/api/companyUser.js'
+	import {getDictByKey} from '@/api/common.js'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin], 
+		data() {
+			return {
+				time:this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				type:null,
+				showType:1,
+				mescroll:null,
+				tags:[
+					{id:1,dictLabel:'待处理'},
+					{id:2,dictLabel:'处理中'},
+					{id:3,dictLabel:'已完成'},
+					{id:4,dictLabel:'已关闭'},
+				],
+				// 上拉加载的配置
+				upOption: {
+					onScroll:true,
+					use: true, // 是否启用上拉加载; 默认true
+					page: {
+						num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+						size: 10 // 每页数据的数量,默认10
+					},
+					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+					empty: {
+						icon:'/static/images/no_data.png',
+						tip: '暂无数据'
+					}
+				},
+				form:{
+				}
+			}
+		},
+		onLoad(option) {
+			this.type=option.type;
+			console.log(this.type)
+			if(this.type=='edit'){
+				this.id=option.id;
+				this.getInfo();
+			}
+			// this.getDictByKey()
+		},
+		methods: {
+			navgetTo(url){
+				uni.navigateTo({
+					url:url
+				})
+			},
+			bindDateChange: function(e) {
+				this.form.dueDate= e.target.value
+			},
+			bindTimeChange: function(e) {
+				this.form.completeTime = e.target.value
+			},
+			bindStatusChange: function(e,list) {
+				this.form.status = list[e.target.value].id
+				this.form.statusName=list[e.target.value].dictLabel
+			},
+			getDictByKey(){
+				// var data={key:'todo_item_status'}
+				getCategory().then(
+					res => {
+						if(res.code==200){
+							this.tags=res.data;
+						}
+					},
+					err => {
+					}
+				);
+				
+			},
+			getInfo(){
+				// var data={id:this.recordId};
+				getComplaintById(this.id).then(
+					res => {
+						if(res.code==200){
+							  this.form=res.data;
+							  // this.form.completeTime=this.form.completeTime.slice(0,5)
+							  
+						}else{
+							uni.showToast({
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		    submit(){
+		    	if(this.form.status==null){
+		    		uni.showToast({
+		    			icon:'none',
+		    			title: "请选择状态",
+		    		});
+		    		return;
+		    	}
+		    	// if(this.form.recordTime==null){
+		    	// 	uni.showToast({
+		    	// 		icon:'none',
+		    	// 		title: "记录时间不能为空",
+		    	// 	});
+		    	// 	return;
+		    	// }
+		    	// if(this.form.mealDescription==null){
+		    	// 	uni.showToast({
+		    	// 		icon:'none',
+		    	// 		title: "用餐情况不能为空",
+		    	// 	});
+		    	// 	return;
+		    	// }
+		    	if(this.type=="add"){
+		    		this.addRecord()
+		    	}
+		    	else if(this.type=="edit"){
+		    		this.updateById()
+		    	}
+		    	
+		    },
+		    updateById(){
+		    	updateComplaint(this.id,this.form).then(
+		    		res => {
+		    			if(res.code==200){
+		    				 uni.showToast({
+		    				 	icon:'success',
+		    				 	title: "操作成功",
+		    				 });
+		    				 setTimeout(function() {
+		    					 uni.$emit('refreshComplaintList');
+		    					 uni.navigateBack({
+		    						 delta: 1
+		    					 })
+		    				 }, 500);
+		    			}else{
+		    				uni.showToast({
+		    					icon:'none',
+		    					title: res.msg,
+		    				});
+		    			}
+		    		},
+		    		rej => {}
+		    	);
+		    },
+		    addRecord(){
+		    	addRecord(this.form).then(
+		    		res => {
+		    			if(res.code==200){
+		    				 uni.showToast({
+		    				 	icon:'success',
+		    				 	title: "操作成功",
+		    				 });
+		    				 setTimeout(function() {
+		    					uni.$emit('refreshToDoList');
+		    					 uni.navigateBack({
+		    						 delta: 1
+		    					 })
+		    				 }, 500);
+		    			}else{
+		    				uni.showToast({
+		    					icon:'none',
+		    					title: res.msg,
+		    				});
+		    			}
+		    		},
+		    		rej => {}
+		    	);
+		    },
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.flex-bt {
+		@include u-flex(row, center, space-between);
+	}
+	.default {
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #999999;
+	}
+	.content{
+		padding: 20upx;
+		.datebox {
+			padding: 0 30rpx;
+			margin-bottom: 20rpx;
+			background: #FFFFFF;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			.form-item{
+				padding: 30upx 0;
+				display: flex;
+				align-items: flex-start;
+				border-bottom: 1px solid #F1F1F1;
+				&:last-child{
+					border-bottom: none;
+				}
+				.label{
+					flex:1;
+					font-family: PingFang SC, PingFang SC;
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #222426;
+					line-height: 34rpx;
+					text-align: left;
+				}
+				input{
+					text-align: right;
+				}
+				.form-input{
+					font-size: 30upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					text-align: right;
+				}
+				.form-textarea{
+					font-size: 30upx;
+					color: #999999;
+					height: 100upx;
+					padding: 4upx 0;
+				}
+				 
+				.birth-picker {
+					flex: 1;
+					display: flex;
+					align-items: center;
+					
+					.right-box{
+						width: 100%;
+						display: flex;
+						align-items: center;
+						.input-box{
+							// width: 470upx;
+						}
+						.arrow{
+							width: 13upx;
+							height: 23upx;
+							margin-left: 20upx;
+						}
+					}
+				}
+			}
+		}
+		.datebox2{
+			background: #FFFFFF;
+			padding:30rpx;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			.textinput{
+				margin-top: 30rpx;
+				height:200rpx;
+				color: #999;
+				overflow-y: scroll;
+			}
+		}
+		.top-fixed{
+			width: 100%;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 10;
+		}
+		.pub-tab-box{
+			box-sizing: border-box;
+			width: 100%;
+			padding: 0 40upx;
+			background-color: #FFFFFF;
+			.tab-inner{
+				height: 88upx;
+				line-height: 88upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				overflow-x: auto;
+			}
+			.item{
+				flex:1;
+				font-size: 28upx;
+				white-space: nowrap;
+				line-height: 1;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #626468;
+				// margin-right: 60upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				&:last-child{
+					margin-right: 0;
+				}
+				&.active{
+					font-weight: bold;
+					color:#008FD3;
+					&::after {
+						content: "";
+						width: 48rpx;
+						height: 8rpx;
+						background: linear-gradient(120deg, #31A1FE  0%, #008FD3 100%);
+						position: absolute;
+						bottom: 0;
+						border-radius: 6upx 6upx 0upx 0;
+					}
+				}
+				.text{
+					position: relative;
+					z-index: 1;
+				}
+				.tab-bg{
+					width: 72upx;
+					height: 28upx;
+					position: absolute;
+					top: 17upx;
+					left: 50%;
+					transform: translateX(-36upx);
+					z-index: -1;
+				}
+			}
+		}
+		.btn-box{
+			z-index: 9999;
+			width: 100%;
+			padding: 30upx;
+			// position: fixed;
+			bottom: 0;
+			left: 0;
+			box-sizing: border-box;
+			// background: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			 padding-bottom: 40rpx;
+			.sub-btn{
+				flex:1;
+				// width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3;
+				border-radius: 44upx;
+				display: flex;
+				align-items: center;
+				 border: 2rpx solid #008FD3;
+				justify-content: center;
+				image{
+					margin-right: 16rpx;
+				}
+			}
+			.sub-btn2{
+					flex:1;
+					height: 88upx;
+					line-height: 88upx;
+					text-align: center;
+					font-size: 32rpx;
+					color: #008FD3;
+					font-family: PingFang SC;
+					font-weight: bold;
+					background: #FFFFFF;
+						 border-radius: 44rpx 44rpx 44rpx 44rpx;
+						 border: 2rpx solid #008FD3;
+						 margin-right: 20rpx;
+			}
+		}
+	   .phone-list{
+		   // padding: 30rpx;
+		  
+		   .item{
+			   display: flex;
+			   align-items: center;
+			   justify-content: space-between;
+			   background: #FFFFFF;
+			   border-radius: 16rpx 16rpx 16rpx 16rpx;
+			   // border-bottom: 1rpx solid #ECECEC;
+			   padding: 20rpx;
+			   margin-bottom: 20rpx;
+			   &:last-child{
+				    margin-bottom: 0;
+					
+			   }
+			   .phone-name{
+				   display: flex;
+				   flex-direction: column;
+				   align-items: flex-start;
+				   // justify-content: flex-start;
+				   // padding-left: 24rpx;
+				       flex: 1;
+				   .name{
+				   				   font-family: PingFang SC, PingFang SC;
+				   				   font-weight: 500;
+				   				   font-size: 32rpx;
+				   				   color: #222426;
+				   				   text-align: left;
+				   }
+				   .type{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 28rpx;
+					   color: #626468;
+					   text-align: right;
+				   }
+				   .time{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #898E91;
+					   text-align: left;
+					   margin-top: 14rpx;
+				   }
+			   }
+			   
+		   }
+	   }
+	   .sms-list{
+		   .item{
+			   padding: 30rpx;
+			   background: #FFFFFF;
+			   border-radius: 16rpx 16rpx 16rpx 16rpx;
+			   margin-bottom: 20rpx;
+			   .title{
+				   font-family: PingFang SC;
+				   font-weight: 500;
+				   font-size: 32rpx;
+				   color: #222426;
+				   text-align: left;
+			   }
+			   .box{
+				   display: flex;
+				   align-items: center;
+				   justify-content: space-between;
+				   padding-top: 22rpx;
+				   .time{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #898E91;
+					   text-align: left;
+				   }
+				   .state{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #2CAE5C;
+					   text-align: right;
+				   }
+			   }
+		   }
+	   }
+		
+	}
+</style>

+ 362 - 0
pages_company/complaintList.vue

@@ -0,0 +1,362 @@
+<template>
+	<view class="content">
+		<view class="top-fixed">
+			<!-- 事项列表 -->
+			<view class="filter">
+				<view :class="isShow==false?'time-box':'time-box active'"  @tap="openCalendar()">
+					<view class="title">选择日期</view>
+					<image :src="isShow==false?'/static/images/company/time_arrow_icon.png':'/static/images/company/time_arrow_blue_icon.png'" class="w24 h24"></image>
+				</view>
+				<!-- <view class="list-box">
+					<image src="/static/images/company/list_matters_icon.png" class="w32 h32"></image>
+					<view class="title">事项列表</view>
+				</view> -->
+			</view>
+			</view>
+			<u-popup :show="isShow" mode="top" :round="12" customStyle="top: 110rpx;" @close="close">
+				<view class="calendar-box">
+			           <pushangyuqi-calendar @onDayClick="onDayClick"></pushangyuqi-calendar>
+				</view>
+			</u-popup>
+		<mescroll-body top="110upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+			<view class="sms-list">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @click="showDetail(item)">
+					<view class="justify-between align-center">
+						<view class="title">{{item.categoryName}}</view>
+						<view class="state" :style="{'color':item.status==1?'#FF5030':item.status==2?'#FDBD27':'#2CAE5C'}">
+							{{item.status==1?'待处理':item.status==2?'处理中':item.status==3?'已完成':'已关闭'}}</view>
+					</view>
+					<view class="personnel">
+						{{utils.timeFormat(item.createTime,'yyyy-mm-dd hh:MM:ss')}}
+					</view>
+				</view>
+			</view>
+			<view class="h20"></view>
+		</mescroll-body>
+	</view>
+</template>
+
+<script>
+	import pushangyuqiCalendar from '../components/pushangyuqi-calendar/pushangyuqi-calendar.vue'
+	import {
+		getComplaintList
+	} from '@/api/companyUser.js'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin],
+		components:{
+		           pushangyuqiCalendar
+		        },
+		data() {
+			return {
+				taskType: [{
+						name: "全部",
+						val: null
+					},
+					{
+						name: "固定任务",
+						val: 0
+					},
+					{
+						name: "工作计划",
+						val: 1
+					},
+				],
+				isShow:false,
+				showType: null,
+				mescroll: null,
+				// 上拉加载的配置
+				upOption: {
+					onScroll: true,
+					use: true, // 是否启用上拉加载; 默认true
+					page: {
+						num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+						size: 10 // 每页数据的数量,默认10
+					},
+					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+					empty: {
+						icon: 'https://user.test.ylrztop.com/images/empty_icon.png',
+						tip: '暂无数据'
+					}
+				},
+				dataList: [],
+			}
+		},
+		onLoad(opt) {
+			if(opt.type!==null){
+				this.showType=opt.type
+			}
+			uni.$on('refreshComplaintList', () => {
+				this.mescroll.resetUpScroll()
+			})
+		},
+		methods: {
+			//时间筛选
+			openCalendar(){
+				this.isShow=!this.isShow
+			},
+			close(){
+				this.isShow=false
+			},
+			//日历
+			onDayClick(data){
+			                this.curDate = data;
+							 this.isShow = false
+							 this.mescroll.resetUpScroll()
+			            },
+			navgetTo(index) {
+				uni.navigateTo({
+					url: index == 0 ? '/pages_health/addServe' : '/pages_health/addCompetitors'
+				})
+			},
+			// tab切换
+			orderStatusChange(item) {
+				this.showType = item.val
+				this.mescroll.resetUpScroll()
+			},
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			/*下拉刷新的回调 */
+			downCallback(mescroll) {
+				mescroll.resetUpScroll()
+			},
+			upCallback(page) {
+				//联网加载数据
+				var that = this;
+				var data = {
+					startTime: this.curDate,
+					pageNum: page.num,
+					pageSize: page.size
+				};
+				getComplaintList(data).then(res => {
+					if(res.code==200){
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data; 
+
+						} else {
+							that.dataList = that.dataList.concat(res.data);
+
+						}
+						that.mescroll.endBySize(res.data.length, res.data.total);
+
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
+			},
+			showDetail(item) {
+				// if (item.orderType == 1) {
+					uni.navigateTo({
+						url: '/pages_company/complaintDetail?type=edit&id=' + item.id
+					})
+				// }
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color:#EFF3F7;
+		background: #EFF3F7;
+	}
+	.calendar-box{
+		padding:0 30rpx;
+	}
+	.content {
+		padding: 20upx;
+
+		.top-fixed {
+			width: 100%;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index:10076;
+		}
+		.top-fixed2 {
+			width: 100%;
+			position: fixed;
+			top: 110rpx;
+			left: 0;
+			z-index: 10;
+		}
+        .filter{
+			background: #FFFFFF;
+			padding: 20rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.time-box{
+				display: flex;
+				align-items: center;
+				padding:16rpx 48rpx;
+				background: #F5F7FA;
+				border-radius: 32rpx 32rpx 32rpx 32rpx;
+				.title{
+					font-family: PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #626468;
+					text-align: center;
+					padding-right: 20rpx;
+				}
+				&.active{
+					background: #F0FAFF;
+					.title{
+						color:#008FD3
+					}
+				}
+			}
+			.list-box{
+				display: flex;
+				align-items: center;
+				.title{
+					font-family: PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #222426;
+					text-align: center;
+					padding-left: 16rpx;
+				}
+			}
+		}
+		.pub-tab-box {
+			box-sizing: border-box;
+			width: 100%;
+			padding: 0 20upx;
+		    background-color: #EFF3F7;
+
+			.tab-inner {
+				height: 110upx;
+				line-height: 110upx;
+				display: flex;
+				align-items: center;
+				// justify-content: space-between;
+				overflow-x: auto;
+			}
+
+			.item {
+				// flex: 1;
+				font-size: 28upx;
+				white-space: nowrap;
+				line-height: 1;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #222426;
+				margin-right: 16upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+                background: #FFFFFF;
+                border-radius: 36rpx 36rpx 36rpx 36rpx;
+				padding:16rpx 48rpx;
+				&:last-child {
+					margin-right: 0;
+				}
+
+				&.active {
+					font-weight: bold;
+					color: #fff;
+                    background: linear-gradient(120deg, #31A1FE 0%, #008FD3 100%);
+				}
+
+				.text {
+					position: relative;
+					z-index: 1;
+				}
+
+				.tab-bg {
+					width: 72upx;
+					height: 28upx;
+					position: absolute;
+					top: 17upx;
+					left: 50%;
+					transform: translateX(-36upx);
+					z-index: -1;
+				}
+			}
+		}
+
+		.btn-box2 {
+			z-index: 9999;
+			width: 100%;
+			padding: 30upx;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			box-sizing: border-box;
+			// background: #FFFFFF;
+
+
+			.sub-btn {
+				width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 30upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3;
+				border-radius: 44upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				image {
+					margin-right: 16rpx;
+				}
+			}
+		}
+
+		.sms-list {
+			.item {
+				padding: 30rpx;
+				background: #FFFFFF;
+				border-radius: 16rpx 16rpx 16rpx 16rpx;
+				margin-bottom: 20rpx;
+
+				.title {
+					font-family: PingFang SC;
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #222426;
+					text-align: left;
+				}
+
+				.title {
+					font-family: PingFang SC;
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #222426;
+					text-align: left;
+				}
+
+				.state {
+					font-family: PingFang SC;
+					font-weight: 400;
+					font-size: 26rpx;
+					text-align: right;
+				}
+
+				.personnel {
+					font-family: PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #898E91;
+					text-align: left;
+					margin-top: 16rpx;
+				}
+
+			}
+		}
+
+	}
+</style>

+ 393 - 0
pages_company/doc.vue

@@ -0,0 +1,393 @@
+<template>
+	<view class="content">
+		<view class="inner">
+			<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<u-swipe-action>
+					<view class="form-swipe mb20" v-for="(item,index) in dataList" :key="index">
+						<u-swipe-action-item :options="options" @click="cancel(item,index)" :name="index"
+							:ref="'swipeAction' + index">
+			<view class="item" @click="showDetail(item)">
+				<view class="user-info">
+					<view class="user-top">
+						<view class="user-left">
+							<image :src="item.avatar==null?maleurl:item.avatar" class="w112 h112"></image>
+							<view class="ml32">
+								<view class="name">{{item.username!==null?item.username:'微信用户'}}</view>
+								<view class="age-box"  :style="{'background-color':item.sex==0?'#EBF8FF':'#FCF0E7'}">
+									<u-icon :color="item.sex==0?'#008FD3':'#FF5030'" :name="item.sex==0?'man':'woman'"></u-icon>
+									<view class="age">{{utils.getAge(item.birthdate)}}岁</view>
+								</view>
+							</view>
+							
+						</view>
+						<view class="user-phone">{{utils.parsePhone(item.phone)}}</view>
+					</view>
+					<view class="user-bottom">
+						<view class="btn" @click.stop="toBuy(item)">购买信息</view>
+						<view class="btn" @click.stop="toUser(item)">基本信息</view>
+						<view class="btn" @click.stop="toDoc(item)">健康档案</view>
+					</view>
+				</view>
+			</view>
+			</u-swipe-action-item>
+			</view>
+			</u-swipe-action>
+			<view class="h150"></view>
+			</mescroll-body>
+			<!-- <view v-if="docs.length == 0" class="no-data-box" @click="getMyDocList()">
+				<image src="https://user.test.ylrztop.com/images/empty_icon.png" mode="aspectFit"></image>
+				<view class="empty-title">暂无数据</view>
+			</view> -->
+			
+		</view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="addDoc">
+				<image src="/static/images/health/nav_add_icon24.png" class="w48 h48"></image>
+				<text>创建用户信息</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getInfoList,deleteInfo} from '@/api/health.js'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin], 
+		data() {
+			return {
+				famaleurl:"/static/images/health/female_profile.png",
+				maleurl:"/static/images/health/my_heads.png",
+				dataList:[
+					// {userName:'西航宇',sex:1,birthday:'1990-01-01',phone:'16666666666'},
+					// {userName:'蓝西',sex:2,birthday:'1990-06-01',phone:'1888888888'},
+					// {userName:'西航宇',sex:1,birthday:'1993-01-01',phone:'16666666666'},
+					// {userName:'蓝西',sex:2,birthday:'1994-06-01',phone:'1888888888'},
+					// {userName:'蓝西',sex:2,birthday:'1994-06-01',phone:'1888888888'}
+				],
+				options: [{
+					text: '删除',
+					style: {
+						backgroundColor: '#FF5030'
+					}
+				}],
+				mescroll: null,
+				// 上拉加载的配置
+				upOption: {
+					onScroll: true,
+					use: true, // 是否启用上拉加载; 默认true
+					page: {
+						num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+						size: 10 // 每页数据的数量,默认10
+					},
+					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+					empty: {
+						icon: 'https://user.test.ylrztop.com/images/empty_icon.png',
+						tip: '暂无数据'
+					}
+				},
+			}
+		},
+		onLoad(options) {
+			this.companyId=options.companyId;
+			this.companyUserId=options.companyUserId;
+			uni.$on('refreshDoc', () => {
+				this.mescroll.resetUpScroll()
+				// this.getMyDocList()
+			})
+		},
+		methods: {
+			navgetTo(url){
+				uni.navigateTo({
+					url: url
+				})
+			},
+			
+			
+			
+			toBuy(item){
+				uni.navigateTo({
+					url: '/pages_company/buyOrder?userId='+item.userId+'&companyUserId='+this.companyUserId
+				})
+			},
+			toUser(item){
+				uni.navigateTo({
+					url: '/pages_company/addUser?type=edit&userId='+item.userId+'&companyUserId='+this.companyUserId
+				})
+			},
+			toDoc(item){
+				uni.navigateTo({
+					url: '/pages_company/addDoc?userId='+item.userId+'&companyUserId='+this.companyUserId
+				})
+			},
+			showDetail(item){
+				uni.navigateTo({
+					url: '/pages_company/clientDetail?userId='+item.userId+"&companyUserId="+this.companyUserId
+				})
+			},
+			editDoc(item){
+				uni.navigateTo({
+					url: './addDoc?type=edit&docId='+item.docId
+				})
+			},
+			cancel(item, index) {
+				var that = this;
+				let test = 'swipeAction' + index
+				uni.showModal({
+					title: '提示',
+					content: '确定删除用户信息吗',
+					success: function(res) {
+						if (res.confirm) {
+							var data = {
+								userId:item.userId
+							};
+							deleteInfo(data).then(res => {
+								if (res.code == 200) {
+									uni.showToast({
+										icon: 'success',
+										title: '操作成功',
+									});
+									that.$refs[test][0].closeHandler()
+									that.mescroll.resetUpScroll()
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg,
+									});
+								}
+							});
+						} else if (res.cancel) {
+							that.$refs[test][0].closeHandler()
+						}
+					}
+				});
+			},
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			/*下拉刷新的回调 */
+			downCallback(mescroll) {
+				mescroll.resetUpScroll()
+			},
+			upCallback(page) {
+				//联网加载数据
+				var that = this;
+				var data = {
+					// companyUserId:this.companyUserId,
+					pageNum: page.num,
+					pageSize: page.size
+				};
+				getInfoList(data).then(res => {
+					if (res.code == 200) {
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data.list;
+			
+						} else {
+							that.dataList = that.dataList.concat(res.data.list);
+			
+						}
+						that.mescroll.endBySize(res.data.list.length, res.data.total);
+			
+					} else {
+						uni.showToast({
+							icon: 'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
+			},
+			addDoc() {
+				uni.navigateTo({
+					url: '/pages_company/addUser?type=add&companyId='+this.companyId+"&companyUserId="+this.companyUserId
+				})
+			}
+			 
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: 100%;
+	}
+	.content{
+		height: 100%;
+		display: flex;
+		// flex-direction: column;
+		// justify-content: space-between;
+		.inner{
+			flex: 1;
+			padding: 20upx 20upx 160upx;
+			.item{
+				background: #FFFFFF;
+				border-radius: 20upx;
+				margin-bottom: 20upx;
+				// padding: 40upx 30upx;
+				padding: 32rpx;
+				&:last-child{
+					margin-bottom: 0;
+				}
+				.user-info{
+					.user-top{
+						display: flex;
+						align-items: flex-start;
+						justify-content: space-between;
+						border-bottom: 1px solid #ECECEC;
+						padding-bottom: 40rpx;
+						.user-left{
+							display: flex;
+							align-items: center;
+							justify-content: flex-start;
+							image{
+								border-radius: 50%;
+							}
+							.name{
+								font-family: PingFang SC;
+								font-weight: 500;
+								font-size: 36rpx;
+								color: #222426;
+								text-align: left;
+							}
+							.age-box{
+								display: flex;
+								align-items: center;
+								justify-content: center;
+								border-radius: 24rpx 24rpx 24rpx 24rpx;
+								margin-top: 16rpx;
+								width: 114rpx;
+								    height: 40rpx;
+								.age{
+									font-weight: 400;
+									font-size: 22rpx;
+									color: #626468;
+									line-height: 22rpx;
+									text-align: left;
+								}
+							}
+							
+						}
+						.user-phone{
+							font-family: PingFang SC;
+							font-weight: 500;
+							font-size: 28rpx;
+							color: #222426;
+							text-align: right;
+						}
+					}
+					.user-bottom{
+						display: flex;
+						align-items: center;
+						justify-content: flex-end;
+						padding-top: 20rpx;
+						.btn{
+							width: 176rpx;
+							height: 60rpx;
+							border-radius: 30rpx 30rpx 30rpx 30rpx;
+							border: 1rpx solid #B2B2B2;
+							font-size: 24rpx;
+							color: #222426;
+							line-height: 60rpx;
+							text-align: center;
+							margin-left:16rpx ;
+							&:last-child{
+								border: 1rpx solid #008FD3;
+								color: #008FD3;
+							}
+						}
+						
+					}
+					.gray-tag{
+						height: 46upx;
+						line-height: 46upx;
+						padding: 0 16upx;
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #333333;
+						background: #F7F7F7;
+						border-radius: 8upx;
+						margin-right: 10upx;
+					}
+					.blue-tag{
+						height: 46upx;
+						line-height: 46upx;
+						padding: 0 16upx;
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #4BC9B1;
+						background: #E2F6F2;
+						border-radius: 8upx;
+					}
+				}
+				.stage-box{
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					margin-top: 34upx;
+					.stage{
+						font-size: 26upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #111111;
+						line-height: 1;
+					}
+					.stage-text{
+						font-size: 26upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 1;
+					}
+				}
+				.progress-box{
+					margin-top: 18upx;
+				}
+				.period{
+					font-size: 28upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 1;
+					margin-top: 40upx;
+				}
+			}
+			 
+		}
+		.btn-box{
+			z-index: 9999;
+			width: 100%;
+			padding: 30upx;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			box-sizing: border-box;
+			// background: #FFFFFF;
+			
+	 
+			.sub-btn{
+				width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 30upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3;
+				border-radius: 44upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				image{
+					margin-right: 16rpx;
+				}
+			}
+		}
+		 
+	}
+</style>

+ 54 - 86
pages_company/executionRecord.vue

@@ -21,6 +21,19 @@
 					</view>
 				</view>
 			</view>
+			<view class="title-box align-center justify-between">
+				<text class="left">饮食情况</text>
+				<view class="select-box2" @click="navgetTo('/pages_user/user/dietList')">
+					<image class="w24 h24" src="@/static/images/company/edit_add_icon.png"></image>
+					<text>记录饮食</text>
+				</view>
+			</view>
+			<view class="form-box mb20"  v-if="foods.length>0">
+				<view class="form-item" v-for="(item,index) in foods">
+					<text class="label">{{item.mealDescription}}</text>
+					<text class="time2 ml20">{{item.recordTime.slice(0,5)}}</text>
+				</view>
+			</view>
 			<view class="title-box">
 				健康数据
 			</view>
@@ -63,7 +76,7 @@
 			</view>
 			<view class="title-box align-center justify-between">
 				<text class="left">指标信息</text>
-				<view class="select-box2">
+				<view class="select-box2" @click="navgetTo('/pages_user/user/editIndicator')">
 					<image class="w24 h24" src="@/static/images/company/edit_add_icon.png"></image>
 					<text>选择指标项</text>
 				</view>
@@ -82,6 +95,7 @@
 					</view>
 				</view>
 			</view>
+			
 			<view class="title-box">
 				其他
 			</view>
@@ -95,6 +109,7 @@
 </template>
 
 <script>
+	import {getMyRecordList} from '@/api/companyUser.js'
 	import RenCalendar from '@/components/ren-calendar/ren-calendar.vue'
 	import {
 		getDocDetails,
@@ -109,6 +124,7 @@
 			return {
 				curDate:'',
 				markDays:[],
+				foods:[],
 				type: null,
 				patientId: null,
 				famaleurl:"/static/images/health/female_profile.png",
@@ -146,31 +162,41 @@
 			            this.curDate = today;
 			            this.markDays.push(today);
 			this.type = option.type;
-			console.log(this.type)
-			if (this.type == 'edit') {
-				this.docId = option.docId;
-				// this.getDocDetails();
-			}
+			var that=this;
+			this.userId=option.userId;
+			uni.$on('refreshExecutionRecord', () => {
+				this.getMyRecordList()
+			})
+			this.getMyRecordList()
+		},
+		onShow(){
+			
 		},
 		methods: {
 			//日历
 			onDayClick(data){
 			                this.curDate = data.date;
+							this.getMyRecordList()
 			            },
-			navgetTo(){
+			navgetTo(url){
 				uni.navigateTo({
-					url:'/pages_company/schedule'
+					url:url
 				})
 			},
-			getDocDetails() {
+			//饮食
+			getMyRecordList() {
+				// var user=JSON.parse(uni.getStorageSync('userInfo'));
 				var data = {
-					docId: this.docId
+					userId:this.userId,
+					startDate:this.curDate,
+					  "pageNum": 1,
+					  "pageSize": 10,
 				};
-				getDocDetails(data).then(
+				getMyRecordList(data).then(
 					res => {
 						if (res.code == 200) {
-							this.form = res.data;
-
+							this.foods = res.data.list;
+			
 						} else {
 							uni.showToast({
 								title: res.msg,
@@ -180,83 +206,17 @@
 					rej => {}
 				);
 			},
-			submit() {
-				if (this.form.userName == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "姓名不能为空",
-					});
-					return;
-				}
-				if (this.form.idCard == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "身份证号不能为空",
-					});
-					return;
-				}
-				if (this.form.sex == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "性别不能为空",
-					});
-					return;
-				}
-				if (this.form.birthday == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "出生年月不能为空",
-					});
-					return;
-				}
-				if (this.type == "add") {
-					this.addDoc()
-				} else if (this.type == "edit") {
-					this.editDoc()
-				}
-
-			},
-			editDoc() {
-				editDoc(this.form).then(
-					res => {
-						if (res.code == 200) {
-							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
-							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
-						} else {
-							uni.showToast({
-								icon: 'none',
-								title: res.msg,
-							});
-						}
-					},
-					rej => {}
-				);
-			},
-			addDoc() {
-				addDoc(this.form).then(
+			getDocDetails() {
+				var data = {
+					docId: this.docId
+				};
+				getDocDetails(data).then(
 					res => {
 						if (res.code == 200) {
-							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
-							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
+							this.form = res.data;
+
 						} else {
 							uni.showToast({
-								icon: 'none',
 								title: res.msg,
 							});
 						}
@@ -264,6 +224,7 @@
 					rej => {}
 				);
 			},
+		
 			// 出生日期选择
 			bindDateChange: function(e) {
 				this.form.birthday = e.target.value
@@ -360,6 +321,13 @@
 							text-align: left;
 						}
 					}
+					.time2{
+						font-family: PingFang SC;
+						font-weight: 400;
+						font-size: 28rpx;
+						color: #898E91;
+						text-align: right;
+					}
 					.check{
 						
 						display: flex;

+ 68 - 35
pages_company/index.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="top-cont">
-		<image class="bg" src="/static/images/company/sales_management_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/sales_management_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
-		<u-navbar title="销售管理" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
+		<u-navbar title="销售管理" titleStyle="font-weight: 500;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
 		</u-navbar>
 		<view class="content">
@@ -65,33 +65,33 @@
 						<view class="phone-box" v-if="user!=null">
 							<image class="w32 h32" src="../static/images/company/phone_icon16.png" mode=""></image>
 							<view class="phone">
-								{{utils.parsePhone(user.phonenumber)}}
+								{{user.phonenumber}}
 							</view>
 						</view>
 					</view>
 				</view>
 				<view class="msg-box">
-					 {{user.deptName}}
+					 {{user.deptName||''}}
 				</view>
 			</view>
 			<view class="used-tools2">
 				<view class="title">指标汇总</view>
 				<view class="index-box">
 					<view class="task">
-						<view class="align-center">
+						<view class="align-center" @click="navgetTo('/pages_company/todoList?type=0')">
 							<image class="w48 h48" src="../static/images/company/appointed_task_icon.png" mode=""></image>
 							<view class="box-title">指派任务</view>
 							<image class="w24 h24" src="../static/images/company/right_arrow_right_icon.png" mode=""></image>
 						</view>
-						<view class="prop">80%</view>
+						<view class="prop">{{(data[0].completionRate||0.00)+ "%"}}</view>
 					</view>
 					<view class="work">
-						<view class="align-center" @click="navgetTo('/pages_company/addSchedule')">
+						<view class="align-center" @click="navgetTo('/pages_company/todoList?type=1')">
 							<image class="w48 h48" src="../static/images/company/work_item_icon.png" mode=""></image>
 							<view class="box-title">工作事项</view>
 						<image class="w24 h24" src="../static/images/company/right_arrow_right_icon.png" mode=""></image>
 						</view>
-						<view class="prop">30%</view>
+						<view class="prop">{{(data[1].completionRate||0.00)+ "%"}}</view>
 					</view>
 				</view>
 			</view>
@@ -106,7 +106,7 @@
 						<image src="../static/images/company/to_do_list_icon.png" mode=""></image>
 						<text class="text">待办事项</text>
 					</view>
-					<view class="item" @click="navgetTo('/pages_company/clientList')">
+					<view class="item" @click="toUser()">
 						<image src="../static/images/company/customer_profile_icon.png" mode=""></image>
 						<text class="text">客户档案</text>
 					</view>
@@ -114,7 +114,11 @@
 						<image src="../static/images/company/manager_examine_icon.png" mode=""></image>
 						<text class="text">管理师考核</text>
 					</view>
-					<view class="item" @click="navgetTo('/pages_user/user/userTui')">
+					<view class="item" @click="navgetTo('/pages_company/clientList')">
+						<image src="../static/images/company/my_subordinate.png" mode=""></image>
+						<text class="text">我的下级</text>
+					</view>
+					<view class="item" @click="navgetTo('/pages_company/complaintList')">
 						<image src="../static/images/company/customer_complaints_icon.png" mode=""></image>
 						<text class="text">客户投诉</text>
 					</view>
@@ -129,19 +133,20 @@
 </template>
 
 <script>
-	import {getUserInfo,getQrImg} from '@/api/companyUser'
+	import {getUserInfo,getQrImg,queryCateStatis} from '@/api/companyUser'
 	export default {
 		data() {
 			return {
 				statusBarHeight:'',
 				top:0,
-				user:{
-					nickName:'健康管家小左',
-					phonenumber:'13996660261',
-					deptName:'测试企业',
-					avatar:null
-				},
-				 // user:null,
+				// user:{
+				// 	nickName:'健康管家小左',
+				// 	phonenumber:'13996660261',
+				// 	deptName:'测试企业',
+				// 	avatar:null
+				// },
+				 user:null,
+				 data:null,
 			};
 		},
 		computed: {
@@ -156,14 +161,16 @@
 		},
 		onShow() {
 			console.log("onshow")
-			// this.getUserInfo()
+			this.getUserInfo()
+			this.queryCateStatis()
+			// this.queryCateStatis(1)
 		},
 		methods: {
-			navgetTo(url){
-				uni.navigateTo({
-					url:url
-				})
-			},
+			// navgetTo(url){
+			// 	uni.navigateTo({
+			// 		url:url
+			// 	})
+			// },
 			alipay(){
 				// var url="http://alipay.yjf.runtzh.com/#/?companyId="+this.user.companyId+"&companyUserId="+this.user.userId
 				// uni.setClipboardData({
@@ -181,6 +188,16 @@
 					url:'/pages_company/alipayImg'
 				})
 			},
+			toUser(){
+				// uni.navigateTo({
+				// 	url:'/pages_company/clientList?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+				// })
+				
+				uni.navigateTo({
+					url:'/pages_company/doc?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+				})
+			},
+			//客户档案
 			toCard(){
 				uni.navigateTo({
 					url:'/pages_company/card?cardId='+this.user.cardId
@@ -221,6 +238,22 @@
 					url:'/pages_company/order/coupon'
 				})
 			},
+			queryCateStatis(e){
+				queryCateStatis().then(
+					res => {
+						if(res.code==200){
+							  this.data=res.data;
+						}
+						else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
 			getUserInfo(){
 				var data={token:uni.getStorageSync('CompanyUserToken')}
 				getUserInfo(data).then(
@@ -263,15 +296,15 @@
 			 },
 			 
 			// 跳转页面
-			// navgetTo(url) {
-			// 	this.utils.isLogin().then(res => {
-			// 		if(res){
-			// 			uni.navigateTo({
-			// 				url: url
-			// 			})
-			// 		}
-			// 	})
-			// },
+			navgetTo(url) {
+				this.utils.isLogin().then(res => {
+					if(res){
+						uni.navigateTo({
+							url: url
+						})
+					}
+				})
+			},
 		}
 	}
 </script>
@@ -490,8 +523,8 @@
 					margin-bottom: 50upx;
 					position: relative;
 					image{
-						width: 44upx;
-						height: 44upx;
+						width: 48upx;
+						height: 48upx;
 					}
 					.text{
 						font-size: 24upx;

+ 2 - 2
pages_company/order/confirmCompanyOrder.vue

@@ -122,7 +122,7 @@
 			return {
 				title: "壹柒玖康养集团-您的专属健康解决方案",
 				path: '/pages_company/order/confirmOrder?orderKey='+this.orderKey,
-				imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 			
 		},
@@ -131,7 +131,7 @@
 			return {
 				title:"壹柒玖康养集团-您的专属健康解决方案",
 				query:'orderKey='+this.orderKey,
-				imageUrl:  '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl:  'https://user.test.ylrztop.com/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		methods: {

+ 1 - 1
pages_company/order/productDetails.vue

@@ -870,7 +870,7 @@
 		color: #666666;
 		line-height: 1.8;
 		margin-top: 10upx;
-		background: url(../../static/images/chu_query.png) no-repeat  center center / cover;
+		background: url(https://user.test.ylrztop.com/images/chu_query.png) no-repeat  center center / cover;
 		
 		.logo{
 			flex-shrink: 0;

+ 1 - 0
pages_company/returnRecord.vue

@@ -40,6 +40,7 @@
 					 </view>
 				</view>
 				</view>
+				<view class="h150"></view>
 			</mescroll-body>
 		<view class="btn-box2">
 			<view v-if="showType==1" class="sub-btn" @click="navgetTo(orderStatusValue)">

+ 2 - 1
pages_company/testRecord.vue

@@ -4,7 +4,7 @@
 			<mescroll-body  ref="mescrollRef">
 				<view v-for="(item,index) in dataList" :key="index" class="item" >
 					<view class="item-top">
-						<image src="@/static/images/71014b69fdcc4b56ae2a84bdc28f11c3.png" mode="aspectFill" class="w208 h128 radius12"></image>
+						<image src="https://user.test.ylrztop.com/images/71014b69fdcc4b56ae2a84bdc28f11c3.png" mode="aspectFill" class="w208 h128 radius12"></image>
 						<view class="item-title">
 							<view class="ask-text">{{item.name}}</view>
 							<view class="ask-time">{{item.time}}</view>
@@ -17,6 +17,7 @@
 						</view>
 					</view>
 				</view>
+				<view class="h20"></view>
 			</mescroll-body>
 		</view>
 		<!-- <view class="btn-box2">

+ 540 - 0
pages_company/todoDetail.vue

@@ -0,0 +1,540 @@
+<template>
+	<view class="content">
+			    <view class="datebox">
+					<!-- <view class="form-item">
+						<text class="label">日期</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{form.completeTime}}
+							</view>
+						</view>
+						<picker class="birth-picker" mode="date"   @change="bindDateChange">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.dueDate" placeholder="请选择日期" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker>
+					</view> -->
+					<view class="form-item">
+						<text class="label">截止时间</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{form.dueDate}}
+							</view>
+						</view>
+						<!-- <picker class="birth-picker"  mode="date"  :start="time" @change="bindTimeChange">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.completeTime" placeholder="请选择时间" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker> -->
+					</view>
+					<view class="form-item">
+						<text class="label">事项状态</text>
+						<!-- <view class="right-box">
+							<view class="input-box">
+								{{form.statusText||''}}
+							</view>
+						</view> -->
+						<picker class="birth-picker"  mode="selector"  @change="bindStatusChange($event,tags)" :range="tags" range-key="dictLabel">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.statusText" placeholder="请选择状态" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker>
+					</view>
+					<view class="form-item">
+						<text class="label">优先级</text>
+						<view class="right-box">
+							<view class="input-box">
+								{{form.priorityText||''}}
+							</view>
+						</view>
+						<!-- <picker class="birth-picker"  mode="date"  :start="time" @change="bindTimeChange">
+							<view class="right-box">
+								<view class="input-box">
+									<input type="text" :value="form.completeTime" placeholder="请选择时间" placeholder-class="form-input" disabled="disabled" />
+								</view>
+								<image class="w48 h48" src="@/static/images/health/right_arrow_right_icon24.png"></image>
+							</view>
+						</picker> -->
+					</view>
+			    </view>
+				
+			      <view class="datebox2">
+					  <view class="bold">事项情况</view>
+					  <view class="textinput">
+					  	<textarea  v-model="form.description" auto-height maxlength='500' placeholder="请输入事项情况"/>
+					  </view>
+					  </view>
+		<view class="btn-box">
+			<view  class="sub-btn" @click="submit()">
+				确定
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getFindById,updateById} from '@/api/companyUser.js'
+	import {getDictByKey} from '@/api/common.js'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin], 
+		data() {
+			return {
+				time:this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				type:null,
+				showType:1,
+				mescroll:null,
+				tags:[
+					// {id:0,name:'未完成'},
+					// {id:1,name:'进行中'},
+					// {id:2,name:'已完成'},
+				],
+				// 上拉加载的配置
+				upOption: {
+					onScroll:true,
+					use: true, // 是否启用上拉加载; 默认true
+					page: {
+						num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+						size: 10 // 每页数据的数量,默认10
+					},
+					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+					empty: {
+						icon:'/static/images/no_data.png',
+						tip: '暂无数据'
+					}
+				},
+				form:{
+				}
+			}
+		},
+		onLoad(option) {
+			this.type=option.type;
+			console.log(this.type)
+			if(this.type=='edit'){
+				this.recordId=option.id;
+				this.getInfo();
+			}
+			this.getDictByKey()
+		},
+		methods: {
+			navgetTo(url){
+				uni.navigateTo({
+					url:url
+				})
+			},
+			bindDateChange: function(e) {
+				this.form.dueDate= e.target.value
+			},
+			bindTimeChange: function(e) {
+				this.form.completeTime = e.target.value
+			},
+			bindStatusChange: function(e,list) {
+				this.form.status = list[e.target.value].dictValue
+				this.form.statusText=list[e.target.value].dictLabel
+			},
+			getDictByKey(){
+				var data={key:'todo_item_status'}
+				getDictByKey(data).then(
+					res => {
+						if(res.code==200){
+							this.tags=res.data;
+						}
+					},
+					err => {
+					}
+				);
+				
+			},
+			getInfo(){
+				var data={id:this.recordId};
+				getFindById(data).then(
+					res => {
+						if(res.code==200){
+							  this.form=res.data;
+							  // this.form.completeTime=this.form.completeTime.slice(0,5)
+							  
+						}else{
+							uni.showToast({
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		    submit(){
+		    	if(this.form.status==null){
+		    		uni.showToast({
+		    			icon:'none',
+		    			title: "请选择状态",
+		    		});
+		    		return;
+		    	}
+		    	// if(this.form.recordTime==null){
+		    	// 	uni.showToast({
+		    	// 		icon:'none',
+		    	// 		title: "记录时间不能为空",
+		    	// 	});
+		    	// 	return;
+		    	// }
+		    	// if(this.form.mealDescription==null){
+		    	// 	uni.showToast({
+		    	// 		icon:'none',
+		    	// 		title: "用餐情况不能为空",
+		    	// 	});
+		    	// 	return;
+		    	// }
+		    	if(this.type=="add"){
+		    		this.addRecord()
+		    	}
+		    	else if(this.type=="edit"){
+		    		this.updateById()
+		    	}
+		    	
+		    },
+		    updateById(){
+		    	updateById(this.form).then(
+		    		res => {
+		    			if(res.code==200){
+		    				 uni.showToast({
+		    				 	icon:'success',
+		    				 	title: "操作成功",
+		    				 });
+		    				 setTimeout(function() {
+		    					 uni.$emit('refreshToDoList');
+		    					 uni.navigateBack({
+		    						 delta: 1
+		    					 })
+		    				 }, 500);
+		    			}else{
+		    				uni.showToast({
+		    					icon:'none',
+		    					title: res.msg,
+		    				});
+		    			}
+		    		},
+		    		rej => {}
+		    	);
+		    },
+		    addRecord(){
+		    	addRecord(this.form).then(
+		    		res => {
+		    			if(res.code==200){
+		    				 uni.showToast({
+		    				 	icon:'success',
+		    				 	title: "操作成功",
+		    				 });
+		    				 setTimeout(function() {
+		    					uni.$emit('refreshToDoList');
+		    					 uni.navigateBack({
+		    						 delta: 1
+		    					 })
+		    				 }, 500);
+		    			}else{
+		    				uni.showToast({
+		    					icon:'none',
+		    					title: res.msg,
+		    				});
+		    			}
+		    		},
+		    		rej => {}
+		    	);
+		    },
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.flex-bt {
+		@include u-flex(row, center, space-between);
+	}
+	.default {
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #999999;
+	}
+	.content{
+		padding: 20upx;
+		.datebox {
+			padding: 0 30rpx;
+			margin-bottom: 20rpx;
+			background: #FFFFFF;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			.form-item{
+				padding: 30upx 0;
+				display: flex;
+				align-items: flex-start;
+				border-bottom: 1px solid #F1F1F1;
+				&:last-child{
+					border-bottom: none;
+				}
+				.label{
+					flex:1;
+					font-family: PingFang SC, PingFang SC;
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #222426;
+					line-height: 34rpx;
+					text-align: left;
+				}
+				input{
+					text-align: right;
+				}
+				.form-input{
+					font-size: 30upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					text-align: right;
+				}
+				.form-textarea{
+					font-size: 30upx;
+					color: #999999;
+					height: 100upx;
+					padding: 4upx 0;
+				}
+				 
+				.birth-picker {
+					flex: 1;
+					display: flex;
+					align-items: center;
+					
+					.right-box{
+						width: 100%;
+						display: flex;
+						align-items: center;
+						.input-box{
+							// width: 470upx;
+						}
+						.arrow{
+							width: 13upx;
+							height: 23upx;
+							margin-left: 20upx;
+						}
+					}
+				}
+			}
+		}
+		.datebox2{
+			background: #FFFFFF;
+			padding:30rpx;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			.textinput{
+				margin-top: 30rpx;
+				height:200rpx;
+				overflow-y: scroll;
+			}
+		}
+		.top-fixed{
+			width: 100%;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 10;
+		}
+		.pub-tab-box{
+			box-sizing: border-box;
+			width: 100%;
+			padding: 0 40upx;
+			background-color: #FFFFFF;
+			.tab-inner{
+				height: 88upx;
+				line-height: 88upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				overflow-x: auto;
+			}
+			.item{
+				flex:1;
+				font-size: 28upx;
+				white-space: nowrap;
+				line-height: 1;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #626468;
+				// margin-right: 60upx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				&:last-child{
+					margin-right: 0;
+				}
+				&.active{
+					font-weight: bold;
+					color:#008FD3;
+					&::after {
+						content: "";
+						width: 48rpx;
+						height: 8rpx;
+						background: linear-gradient(120deg, #31A1FE  0%, #008FD3 100%);
+						position: absolute;
+						bottom: 0;
+						border-radius: 6upx 6upx 0upx 0;
+					}
+				}
+				.text{
+					position: relative;
+					z-index: 1;
+				}
+				.tab-bg{
+					width: 72upx;
+					height: 28upx;
+					position: absolute;
+					top: 17upx;
+					left: 50%;
+					transform: translateX(-36upx);
+					z-index: -1;
+				}
+			}
+		}
+		.btn-box{
+			z-index: 9999;
+			width: 100%;
+			padding: 30upx;
+			// position: fixed;
+			bottom: 0;
+			left: 0;
+			box-sizing: border-box;
+			// background: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			 padding-bottom: 40rpx;
+			.sub-btn{
+				flex:1;
+				// width: 100%;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				background: #008FD3;
+				border-radius: 44upx;
+				display: flex;
+				align-items: center;
+				 border: 2rpx solid #008FD3;
+				justify-content: center;
+				image{
+					margin-right: 16rpx;
+				}
+			}
+			.sub-btn2{
+					flex:1;
+					height: 88upx;
+					line-height: 88upx;
+					text-align: center;
+					font-size: 32rpx;
+					color: #008FD3;
+					font-family: PingFang SC;
+					font-weight: bold;
+					background: #FFFFFF;
+						 border-radius: 44rpx 44rpx 44rpx 44rpx;
+						 border: 2rpx solid #008FD3;
+						 margin-right: 20rpx;
+			}
+		}
+	   .phone-list{
+		   // padding: 30rpx;
+		  
+		   .item{
+			   display: flex;
+			   align-items: center;
+			   justify-content: space-between;
+			   background: #FFFFFF;
+			   border-radius: 16rpx 16rpx 16rpx 16rpx;
+			   // border-bottom: 1rpx solid #ECECEC;
+			   padding: 20rpx;
+			   margin-bottom: 20rpx;
+			   &:last-child{
+				    margin-bottom: 0;
+					
+			   }
+			   .phone-name{
+				   display: flex;
+				   flex-direction: column;
+				   align-items: flex-start;
+				   // justify-content: flex-start;
+				   // padding-left: 24rpx;
+				       flex: 1;
+				   .name{
+				   				   font-family: PingFang SC, PingFang SC;
+				   				   font-weight: 500;
+				   				   font-size: 32rpx;
+				   				   color: #222426;
+				   				   text-align: left;
+				   }
+				   .type{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 28rpx;
+					   color: #626468;
+					   text-align: right;
+				   }
+				   .time{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #898E91;
+					   text-align: left;
+					   margin-top: 14rpx;
+				   }
+			   }
+			   
+		   }
+	   }
+	   .sms-list{
+		   .item{
+			   padding: 30rpx;
+			   background: #FFFFFF;
+			   border-radius: 16rpx 16rpx 16rpx 16rpx;
+			   margin-bottom: 20rpx;
+			   .title{
+				   font-family: PingFang SC;
+				   font-weight: 500;
+				   font-size: 32rpx;
+				   color: #222426;
+				   text-align: left;
+			   }
+			   .box{
+				   display: flex;
+				   align-items: center;
+				   justify-content: space-between;
+				   padding-top: 22rpx;
+				   .time{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #898E91;
+					   text-align: left;
+				   }
+				   .state{
+					   font-family: PingFang SC;
+					   font-weight: 400;
+					   font-size: 24rpx;
+					   color: #2CAE5C;
+					   text-align: right;
+				   }
+			   }
+		   }
+	   }
+		
+	}
+</style>

+ 51 - 63
pages_company/todoList.vue

@@ -26,24 +26,25 @@
 				</view>
 			</view>
 		</view>
-			<u-popup :show="isShow" mode="top" :round="12"  customStyle="top: 110rpx;" @click="c">
+			<u-popup :show="isShow" mode="top" :round="12" customStyle="top: 110rpx;" @close="close">
 				<view class="calendar-box">
 			           <pushangyuqi-calendar @onDayClick="onDayClick"></pushangyuqi-calendar>
 				</view>
 			</u-popup>
-		<mescroll-body top="200upx" ref="mescrollRef">
+		<mescroll-body top="200upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
 			<view class="sms-list">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @click="showDetail(item)">
 					<view class="justify-between align-center">
-						<view class="title">{{item.content}}</view>
-						<view class="state" :style="{'color':item.status==0?'#FF5030':'#2CAE5C'}">
-							{{item.status==0?"未完成":"已完成"}}</view>
+						<view class="title">{{item.title}}</view>
+						<view class="state" :style="{'color':item.status==0?'#FF5030':item.status==1?'#FDBD27':'#2CAE5C'}">
+							{{item.statusText}}</view>
 					</view>
 					<view class="personnel">
-						{{item.personnel}}
+						{{item.assigneeName}}
 					</view>
 				</view>
 			</view>
+			<view class="h20"></view>
 		</mescroll-body>
 	</view>
 </template>
@@ -51,9 +52,8 @@
 <script>
 	import pushangyuqiCalendar from '../components/pushangyuqi-calendar/pushangyuqi-calendar.vue'
 	import {
-		getMyDoctorOrderList,
-		cancelOrder
-	} from '@/api/doctorOrder.js'
+		getToDoList
+	} from '@/api/companyUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin],
@@ -64,19 +64,19 @@
 			return {
 				taskType: [{
 						name: "全部",
-						val: 0
+						val: null
 					},
 					{
 						name: "固定任务",
-						val: 1
+						val: 0
 					},
 					{
 						name: "工作计划",
-						val: 2
+						val: 1
 					},
 				],
 				isShow:false,
-				showType: 0,
+				showType: null,
 				mescroll: null,
 				// 上拉加载的配置
 				upOption: {
@@ -92,46 +92,34 @@
 						tip: '暂无数据'
 					}
 				},
-				dataList: [{
-						orderId: 1,
-						content: '发送20条营销短信',
-						status: 0,
-						personnel: '管理员张三分配'
-					},
-					{
-						orderId: 2,
-						content: '发送20条营销短信',
-						status: 1,
-						personnel: '管理员张三分配'
-					},
-					{
-						orderId: 3,
-						content: '发送20条营销短信',
-						status: 0,
-						personnel: '管理员张三分配'
-					}
-				]
+				dataList: [],
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(opt) {
+			if(opt.type!==null){
+				this.showType=opt.type
+			}
+			uni.$on('refreshToDoList', () => {
+				this.mescroll.resetUpScroll()
+			})
 		},
 		methods: {
 			//时间筛选
 			openCalendar(){
 				this.isShow=!this.isShow
 			},
+			close(){
+				this.isShow=false
+			},
 			//日历
 			onDayClick(data){
 			                this.curDate = data;
 							 this.isShow = false
 			            },
 			navgetTo(index) {
-				uni.navigateTo({
-					url: index == 0 ? '/pages_health/addServe' : '/pages_health/addCompetitors'
-				})
+				// uni.navigateTo({
+				// 	url: index == 0 ? '/pages_health/addServe' : '/pages_health/addCompetitors'
+				// })
 			},
 			// tab切换
 			orderStatusChange(item) {
@@ -149,38 +137,38 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status: this.showType,
-					page: page.num,
+					cateId: this.showType,
+					pageNum: page.num,
 					pageSize: page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
+				getToDoList(data).then(res => {
+					if(res.code==200){
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data.list; 
 
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
+						} else {
+							that.dataList = that.dataList.concat(res.data.list);
 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+						}
+						that.mescroll.endBySize(res.data.list.length, res.data.total);
 
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
 			},
 			showDetail(item) {
-				if (item.orderType == 1) {
+				// if (item.orderType == 1) {
 					uni.navigateTo({
-						url: '/pages_doctor/doctorOrderIM?orderId=' + item.orderId
+						url: '/pages_company/todoDetail?type=edit&id=' + item.id
 					})
-				}
+				// }
 			}
 		}
 	}

+ 2 - 2
pages_doctor/index.vue

@@ -15,7 +15,7 @@
 		<!-- 快速问诊、找医生 -->
 		<view class="online-inquiry" :style="{marginTop:top}">
 			<view class="item" @click="navTo('./postConsult')">
-				<image class="bg-img" src="@/static/images/online_treat.png" mode=""></image>
+				<image class="bg-img" src="https://user.test.ylrztop.com/images/online_treat.png" mode=""></image>
 				<view class="inner">
 					<text class="title">快速问诊</text>
 					<text class="sub-title">智能科室 快速匹配</text>
@@ -23,7 +23,7 @@
 				</view>
 			</view>
 			<view class="item" @click="navTo('./doctorList')">
-				<image class="bg-img" src="@/static/images/chu_query.png" mode=""></image>
+				<image class="bg-img" src="https://user.test.ylrztop.com/images/chu_query.png" mode=""></image>
 				<view class="inner">
 					<text class="title">找医生</text>
 					<text class="sub-title">全国60万医生任你选</text>

+ 203 - 114
pages_echarts/acid.vue

@@ -1,13 +1,13 @@
 <template>
 	<view class="hb column hidden container">
-		<image class="bg" src="/static/images/health/uric_acid_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/uric_acid_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
 		<u-navbar title="尿酸监测" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
 		</u-navbar>
-		
+
 		<view class="top-fixed">
-			<dateTimePicker @onChange="onChangeTime" :tabColor="'blue'"/>
+			<dateTimePicker @onChange="onChangeTime" :tabColor="'blue'" />
 		</view>
 		<scroll-view class="content" :scroll-y="true">
 			<view class="content-box">
@@ -31,31 +31,31 @@
 			<view class="content-box">
 				<view class="align-center justify-between">
 					<view class="tltle">尿酸异常记录</view>
-					<view class="more" @click="navgetTo()">
+					<view class="more" @click="goPage()">
 						<text>查看更多</text>
 						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 					</view>
-					
+
 				</view>
 				<view class="type-box">
 					<view class="box bg3">
 						<view class="fs32 mb12">高风险</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count0}}次</text>
 							<image class="w24 h24" src="/static/images/health/yz_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg2">
 						<view class="fs32 mb12">不良</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count0}}次</text>
 							<image class="w24 h24" src="/static/images/health/qw_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg1">
 						<view class="fs32 mb12">正常</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count0}}次</text>
 							<image class="w24 h24" src="/static/images/health/zc_arrow_icon.png"></image>
 						</view>
 					</view>
@@ -82,6 +82,8 @@
 </template>
 
 <script>
+	import {getUserInfo} from '@/api/user.js'
+	import {getDataList,getLatest,getLatestList} from '@/api/healthUser.js'
 	import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePicker.vue"
 	export default {
 		components: {
@@ -89,6 +91,7 @@
 		},
 		data() {
 			return {
+				examDate: null,
 				loading: false,
 				isEmpty: false,
 				statusBarHeight: '',
@@ -109,46 +112,48 @@
 				],
 				indexInfo: [],
 				chartData: {},
-			opts: {
-				padding: [15, 0, 15, 0],
-				enableScroll: false,
-				dataLabel: false,
-				legend: {
-					show: false
-				},
-				xAxis: {
-					disableGrid: true,
-					fontSize: 12,
-					axisLine: false,
-					fontColor: '#ccc',
-					labelCount: 7,
-					format: "formatterTime",
-				},
-				yAxis: {
-					gridType: "dash",
-					dashLength: 2,
-					data: [{
-						fontColor: '#ccc',
-						min: 0,
-						// max: 100,
-						axisLine: false,
+				opts: {
+					padding: [15, 0, 15, 0],
+					enableScroll: false,
+					dataLabel: false,
+					legend: {
+						show: false
+					},
+					xAxis: {
+						disableGrid: true,
 						fontSize: 12,
-					}]
-				},
-				extra: {
-					tooltip: {
+						axisLine: false,
+						fontColor: '#ccc',
+						labelCount: 7,
+						format: "formatterTime",
+					},
+					yAxis: {
 						gridType: "dash",
-						showArrow: false,
-						legendShow: true,
-						legendShape: "circle"
+						dashLength: 2,
+						data: [{
+							fontColor: '#ccc',
+							min: 0,
+							// max: 100,
+							axisLine: false,
+							fontSize: 12,
+						}]
 					},
-					column: {
-						type: "group",
-						width: 12,
-						barBorderRadius: [4, 4, 0, 0],
-					}
-				}
-			}
+					extra: {
+						tooltip: {
+							gridType: "dash",
+							showArrow: false,
+							legendShow: true,
+							legendShape: "circle"
+						},
+						column: {
+							type: "group",
+							width: 12,
+							barBorderRadius: [4, 4, 0, 0],
+						}
+					},
+					
+				},count:{},
+					user:null
 			}
 		},
 		computed: {
@@ -158,11 +163,19 @@
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
+		onLoad(options) {
+			console.log(options, '--')
+			// this.userId=options.userId
 			// 获取系统信息
+			this.userId=options.userId
 			const sys = uni.getSystemInfoSync()
 			this.statusBarHeight = sys.statusBarHeight + 'px'
-			this.getServerData();
+			// this.getUserInfo()
+			// this.getServerData(0);
+			uni.$on('refreshAcid', () => {
+				this.aIndex = 0
+				this.getServerData(0);
+			})
 		},
 		onUnload() { //普通页面在 onUnload 生命周期中执行
 			uni.$emit('stop')
@@ -179,60 +192,133 @@
 			orderStatusChange(item) {
 				this.aIndex = item.val
 			},
-			onChangeTime(time) {
-				const param = {
-					startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
-					endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
-					deviceId: ''
-				}
+			onChangeTime(time,tab) {
+				if (this.userId) {
+					this.examDate=time
+				    this.getServerData(tab);
+				  }
 				// this.queryParam = param
 				// this.getServerData(param)
 				// this.getAbnormalInfo(param)
 			},
-			getServerData() {
+			getUserInfo(){
+				getUserInfo().then(
+					res => {
+						if(res.code==200){
+							if(res.user!=null){
+								this.user=res.user;
+								// this.getServerData(0)
+							}
+							else{
+								this.utils.loginOut();
+							}
+							
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getServerData(index) {
+				var that=this
+				var data={
+					userId:this.userId, 
+					measurementType: 4, 
+					pageNum:1,
+					pageSize:100,
+					timeSearch:this.examDate,
+					// "value1": 85, 
+					// "measurementTime": this.utils.timeFormat(new Date(),'hh:MM:ss')
+				}
+				const weekMap= {
+				  1: '一',
+				  2: '二',
+				  3: '三',
+				  4: '四',
+				  5: '五',
+				  6: '六',
+				  0: '日' // 注意:JavaScript中getDay()返回0表示周日
+				};
+				getLatestList(data).then(
+					res => {
+						if (res.code == 200) {
+							// console.log(res.count0,'res')
+							this.count=res.count
+							var list=res.data.list
+							var time=list.map(item => item.measurementTime).reverse()
+							var week=list.map(item => '周'+weekMap[item.week]).reverse()
+							var month=list.map(item => item.measurementDate).reverse()
+							 setTimeout(() => {
+							 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+							 	let res = {
+							 		categories:index==0?time:index==1?week:month,
+							 		series: [{
+							 			name: "测量值",
+							 			data: list.map(item => item.value1)
+							 		}
+							 		]
+							 	};
+							 	this.chartData = JSON.parse(JSON.stringify(res));
+							 }, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				)
+				
+			},
+			getServerData1() {
 				//模拟从服务器获取数据时的延时
 				setTimeout(() => {
 					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
 					let res = {
 						categories: ["00:00", "06:00", "12:00", "18:00", "23:59"],
-						series: [{
-							name: "尿酸",
-							data:[{
-								value:23,
-								color:'#FDBD27',
-							},{
-								value:123,
-								color:'#FF5558',
-								
-							},
-							{
-								value:90,
-								color:'#52D087',
-							},
-							{
-								value:23,
-								color:'#FDBD27',
-							},
-							{
-								value:90,
-								color:'#52D087',
-							}
-							]
-							// data: res.data.map(item => ({
-							// 	value: item.val,
-							// 	color: item.status === 1 ? "#FDBD27" : item.status ===
-							// 		2 ? "#FF5558" : "#52D087"
-							// }))
-						}
-
-						]
+						// series: [{
+						// 		name: "尿酸",
+						// 		data: [{
+						// 				value: 23,
+						// 				color: '#FDBD27',
+						// 			}, {
+						// 				value: 123,
+						// 				color: '#FF5558',
+
+						// 			},
+						// 			{
+						// 				value: 90,
+						// 				color: '#52D087',
+						// 			},
+						// 			{
+						// 				value: 23,
+						// 				color: '#FDBD27',
+						// 			},
+						// 			{
+						// 				value: 90,
+						// 				color: '#52D087',
+						// 			}
+						// 		]
+
+						// 	}
+						// ]
 					};
 					this.chartData = JSON.parse(JSON.stringify(res));
 				}, 500);
 			},
+			goPage(index) {
+				uni.navigateTo({
+					url: '/pages_echarts/acidList?userId='+this.userId
+				})
+			},
 			navgetTo(index) {
 				uni.navigateTo({
-					url: '/pages_echarts/acidList'
+					url: '/pages_echarts/acidDetail?type=add&userId='+this.userId
 				})
 			},
 			goToUser() {
@@ -326,7 +412,8 @@
 		box-sizing: border-box;
 		width: 100%;
 		padding: 20rpx;
-overflow: hidden;
+		overflow: hidden;
+
 		.btn-box {
 			height: 120upx;
 			padding: 0 30upx;
@@ -379,34 +466,36 @@ overflow: hidden;
 				height: 500rpx;
 				margin-top: 30rpx;
 			}
-.legend {
-		// height: 34rpx;
-		margin-top: 44rpx;
-		// @include u-flex(row, center, space-between);
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		font-family: PingFang SC, PingFang SC;
-		font-weight: 400;
-		font-size: 24rpx;
-		color: #626468;
-
-		&-item {
-			flex: 1;
-			text-align: center;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			// @include u-flex(row, center, center);
-		}
 
-		&-dot {
-			width: 16rpx;
-			height: 16rpx;
-			border-radius: 50%;
-			margin: 16rpx;
-		}
-	}
+			.legend {
+				// height: 34rpx;
+				margin-top: 44rpx;
+				// @include u-flex(row, center, space-between);
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				font-family: PingFang SC, PingFang SC;
+				font-weight: 400;
+				font-size: 24rpx;
+				color: #626468;
+
+				&-item {
+					flex: 1;
+					text-align: center;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					// @include u-flex(row, center, center);
+				}
+
+				&-dot {
+					width: 16rpx;
+					height: 16rpx;
+					border-radius: 50%;
+					margin: 16rpx;
+				}
+			}
+
 			.more {
 				display: flex;
 				align-items: center;

+ 171 - 8
pages_echarts/acidDetail.vue

@@ -29,14 +29,19 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleScale" :minVal="0" :maxVal="33" :int="false" :single="10" :h="h" :active="active" :scroll="false" :style="style"
+				<simpleScale ref="simpleScale" :minVal="0" :maxVal="1000" :int="false" :single="10" :h="h" :active="active" :style="style"
 					@value="getScroll" />
 			</view>
 		</view>
+		<view class="h40"></view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">记录</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import {addData,getDataById,getLatest,updateData} from '@/api/healthUser.js'
 	import simpleScale from "@/pages_echarts/components/simpleScale/simpleScale.vue"
 	// import { bgInfo } from "@/api/pages_watch/healthMonitoring.js"
 	export default {
@@ -45,13 +50,12 @@
 		},
 		data() {
 			return {
-				// 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
-				startDate: "2020-01-01",
+				startDate:this.utils.timeFormat(new Date()) ,
 				// 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
 				endDate: this.utils.timeFormat(new Date()),
-				date: "2024-01-01",
-				time: "17:12",
-				active: "6",
+				date: this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				time: this.utils.timeFormat(new Date(),'hh:MM:ss'),
+				active: "0",
 				loading: false,
 				style: {
 					line: '#ccc',
@@ -60,10 +64,19 @@
 					fontColor: '#333',
 					fontSize: 16
 				},
-				h: uni.upx2px(88)
+				h: uni.upx2px(88),
 			}
 		},
-		onLoad(option) {
+		onLoad(options) {
+			console.log(options)
+			this.type=options.type;
+			this.userId=options.userId
+			if(this.type=='edit'){
+				this.id=options.id;
+				this.getDataById();
+				// this.listByIndicator()
+			}
+			
 			// const param = JSON.parse(option.param)
 			// this.date = param.createTime && param.createTime.split(' ')[0]
 			// this.time = param.createTime && param.createTime.substring(11, 16)
@@ -84,6 +97,114 @@
 			getScroll(e) {
 				this.active = e
 			},
+			getDataById(){
+				getDataById({id:this.id}).then(
+					res => {
+						if(res.code==200){
+							this.date=res.data.measurementDate
+							this.time=res.data.measurementTime
+							this.active= String(res.data.value1)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit(){
+				var data={
+					userId:this.userId,
+					"measurementType": 4, //测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+					"value1": this.active, //数值1(测量值1 测量值只有一个时默认填写/身高cm/舒张压)
+					"measurementDate": this.date, //测量日期 yyyy-MM-dd
+					"measurementTime":this.time//测量时间 HH:mm:ss
+				}
+				if(this.type=="add"){
+					this.addData(data)
+				}
+				else if(this.type=="edit"){
+					data.id=this.id
+					this.updateData(data)
+				}
+			
+			},
+			addData(data){
+				addData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "操作成功",
+							 });
+							 setTimeout(function() {
+								uni.$emit('refreshAcidList');
+								// uni.$emit('refreshAcid');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			updateData(data){
+				updateData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "更新成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshAcidList');
+								 // uni.$emit('refreshAcid');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getLatest(){
+				var data={
+					userId:this.userId,
+					measurementType:2
+				}
+				getLatest(data).then(
+					res => {
+						if(res.code==200){
+							if(res.data==null){
+								this.type='add'
+							}else{
+								this.type='edit'
+								this.form = res.data;
+							}
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
 			// 查询数据
 			getList() {
 				this.loading = true
@@ -132,6 +253,27 @@
 		font-size: 28rpx;
 		color: #999999;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #4585F8;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.container {
 		padding: 20rpx 24rpx;
 		font-family: PingFang SC, PingFang SC;
@@ -139,6 +281,27 @@
 		font-size: 32rpx;
 		color: #333333;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #2CAE5C;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.datebox {
 		padding: 0 32rpx;
 		margin-bottom: 20rpx;

+ 60 - 95
pages_echarts/acidList.vue

@@ -20,22 +20,23 @@
 			<view class="tab-time">
 				<picker class="birth-picker" mode="date"  fields="month"  @change="bindDateChange">
 					<view class="left-box">
-						<view>{{day}}</view>
+						<view>{{dayName}}</view>
 						<image class="w48 h48" src="../static/images/health/arrow_down.png"></image>
 					</view>
 				</picker>
 			</view>
-			<mescroll-body top="176upx" ref="mescrollRef">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+			<mescroll-body top="176upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @longpress="cancel(item)">
 					<view class="item-top">
-						{{item.date}}
+						{{item.measurementDate}}
 					</view>
-					<view class="bottom-box" v-for="(it,idx) in item.list" :key="idx" @click="showDetail(it)">
+					<view class="bottom-box"  @click="showDetail(item)">
 						<view class="amount-paid">
-							<view :class="'title bg'+it.type">{{it.typeName}}</view>
-							<view class="data">{{it.data}} μmol/L</view>
+							<view :class="'title bg'+item.level">{{item.level==0?'正常':item.level==1?'不良':'高风险'}}</view>
+							<view class="data">{{item.value1}} μmol/L</view>
 						</view>
-						<view class="time">{{utils.timeFormat(it.createTime, "hh:MM")}}</view>
+						<view class="time">{{item.measurementTime}}</view>
 					</view>
 				</view>
 			</mescroll-body>
@@ -44,13 +45,14 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getDataList,getLatest,deleteData} from '@/api/healthUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
-				day:this.utils.timeFormat(new Date(),'yyyy年mm月'),
+				day:this.utils.timeFormat(new Date(),'yyyy-mm'),
+				dayName:this.utils.timeFormat(new Date(),'yyyy年mm月'),
 				orderStatus:[
 					{name:"全部",val:""},
 					{name:"正常",val:"0"},
@@ -69,66 +71,28 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-06-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'不良',
-								data:10.9,
-								createTime:'2025-06-25 22:39:55'
-							},
-							{
-								type:3,
-								typeName:'高风险',
-								data:10.9,
-								createTime:'2025-06-25 17:39:55'
-							}
-						],
-						date:'2025-06-25',
-						id:1
-					},
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-02-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'不良',
-								data:10.9,
-								createTime:'2025-02-25 20:39:55'
-							}
-						],
-						date:'2025-02-25',
-						id:2
-					}
-				]
+				dataList: []
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId
+			uni.$on('refreshAcidList', () => {
+				this.orderStatusValue=''
+				this.mescroll.resetUpScroll()
+				uni.$emit('refreshAcid');
+			})
 		},
 		methods: {
 			// 时间选择
 			bindDateChange: function(e) {
-				this.day = this.utils.timeFormat(new Date(e.target.value),'yyyy年mm月')
+				this.day = this.utils.timeFormat(e.target.value,'yyyy-mm')
+				this.dayName=this.utils.timeFormat(e.target.value,'yyyy年mm月')
+				this.mescroll.resetUpScroll()
 			},
 			navgetTo(index){
 				uni.navigateTo({
@@ -139,19 +103,20 @@
 				var that=this;
 				uni.showModal({
 				    title: '提示',
-				    content: '确定取消订单吗',
+				    content: '确定删除记录吗',
 				    success: function (res) {
 				        if (res.confirm) {
 							var data = {
-								orderId:item.orderId
+								id:item.id
 							};
-							cancelOrder(data).then(res => {
+							deleteData(data).then(res => {
 								if(res.code==200){
 									uni.showToast({
 										icon:'success',
-										title: '订单已取消',
+										title: '删除成功',
 									});
 									 that.mescroll.resetUpScroll()
+									 uni.$emit('refreshAcid');
 								}else{
 									uni.showToast({
 										icon:'none',
@@ -168,9 +133,6 @@
 			// tab切换
 			orderStatusChange(item) {
 				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
 				this.mescroll.resetUpScroll()
 			},
 			mescrollInit(mescroll) {
@@ -184,36 +146,39 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
+					"userId": this.userId,
+					"measurementType": 4, 
+					level:this.orderStatusValue,
+					timeSearch:this.day,
+					pageNum:page.num,
+					pageSize:page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+			getDataList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
 						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					} else {
+						that.dataList = that.data.List.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
 			},
 			showDetail(item){
-				console.log(item,'pp')
+				// console.log(item,'pp')
 				uni.navigateTo({
-					url: '/pages_echarts/acidDetail'
+					url: '/pages_echarts/acidDetail?type=edit&id='+item.id+'&userId='+this.userId
 				})
 			}
 		}
@@ -376,13 +341,13 @@
 							margin-right: 18rpx;
 							border-radius:50%;
 						}
-						.bg1{
+						.bg0{
 							background: #52D087;
 						}
-						.bg2{
+						.bg1{
 							background: #FFB992;
 						}
-						.bg3{
+						.bg2{
 							background: #FF5558;
 						}
 						.data{

+ 106 - 40
pages_echarts/bloodPressure.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="hb column hidden container">
-		<image class="bg" src="/static/images/health/blood_pressure_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/blood_pressure_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
 		<u-navbar title="血压检测" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
@@ -28,7 +28,7 @@
 			<view class="content-box">
 				<view class="align-center justify-between">
 					<view class="tltle">血压异常记录</view>
-					<view class="more" @click="navgetTo()">
+					<view class="more" @click="goPage()">
 						<text>查看更多</text>
 						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 					</view>
@@ -37,21 +37,21 @@
 					<view class="box bg1">
 						<view class="fs32 mb12">正常</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count0}}次</text>
 							<image class="w24 h24" src="/static/images/health/zc_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg2">
 						<view class="fs32 mb12">轻微</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count1}}次</text>
 							<image class="w24 h24" src="/static/images/health/qw_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg3">
 						<view class="fs32 mb12">严重</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count2}}次</text>
 							<image class="w24 h24" src="/static/images/health/yz_arrow_icon.png"></image>
 						</view>
 					</view>
@@ -66,6 +66,8 @@
 </template>
 
 <script>
+	import {getUserInfo} from '@/api/user.js'
+	import {getDataList,getLatest,getLatestList} from '@/api/healthUser.js'
 	import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePicker.vue"
 	export default {
 		components: {
@@ -125,7 +127,9 @@
 							activeType: "solid"
 						}
 					}
-				}
+				},
+				count:{},
+				user:null
 			}
 		},
 		computed: {
@@ -135,11 +139,17 @@
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
+		onLoad(options) {
 			// 获取系统信息
 			const sys = uni.getSystemInfoSync()
 			this.statusBarHeight = sys.statusBarHeight + 'px'
-			this.getServerData();
+			this.userId=options.userId
+			// this.getUserInfo()
+			// this.getServerData(0);
+			uni.$on('refreshBloodPressure', () => {
+				this.aIndex=0
+				this.getServerData(0);
+			})
 		},
 		onUnload() { //普通页面在 onUnload 生命周期中执行
 			uni.$emit('stop')
@@ -156,45 +166,101 @@
 			orderStatusChange(item) {
 				this.aIndex = item.val
 			},
-			onChangeTime(time) {
-				const param = {
-					startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
-					endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
-					deviceId: ''
-				}
-				// this.queryParam = param
-				// this.getServerData(param)
-				// this.getAbnormalInfo(param)
+			onChangeTime(time,tab) {
+				if (this.userId) {
+					this.examDate=time
+				    this.getServerData(tab);
+				  }
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["1", "2", "3", "4", "5"],
-						series: [{
-							name: "收缩压",
-							color: "#FF5030",
-							data: [35, 180, 125, 307, 40]
-						},
-						{
-							name: "舒张压",
-							color: "#008FD3",
-							data: [135, 18, 125, 370, 40]
+			getUserInfo(){
+				getUserInfo().then(
+					res => {
+						if(res.code==200){
+							if(res.user!=null){
+								this.user=res.user;
+								// this.getServerData(0)
+							}
+							else{
+								this.utils.loginOut();
+							}
+							
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getServerData(index) {
+				var that=this
+				var data={
+					userId:this.userId, 
+					measurementType: 3, 
+					pageNum:1,
+					pageSize:100,
+					timeSearch:this.examDate,
+					// "value1": 85, 
+					// "measurementTime": this.utils.timeFormat(new Date(),'hh:MM:ss')
+				}
+				const weekMap= {
+				  1: '一',
+				  2: '二',
+				  3: '三',
+				  4: '四',
+				  5: '五',
+				  6: '六',
+				  0: '日' // 注意:JavaScript中getDay()返回0表示周日
+				};
+				getLatestList(data).then(
+					res => {
+						if (res.code == 200) {
+							// console.log(res.count0,'res')
+							this.count=res.count
+							var list=res.data.list
+							var time=list.map(item => item.measurementTime).reverse()
+							var week=list.map(item => '周'+weekMap[item.week]).reverse()
+							var month=list.map(item => item.measurementDate).reverse()
+							//模拟从服务器获取数据时的延时
+							setTimeout(() => {
+								//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+								let res = {
+									categories:index==0?time:index==1?week:month,
+									series: [{
+										name: "收缩压",
+										color: "#FF5030",
+										data: list.map(item => item.value1)
+									},
+									{
+										name: "舒张压",
+										color: "#008FD3",
+										data: list.map(item => item.value2)
+									}
+									],
+								};
+								this.chartData = JSON.parse(JSON.stringify(res));
+							}, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
 						}
-						],
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
+					},
+					rej => {}
+				)
 			},
-			navgetTo(index) {
+	
+			goPage(index) {
 				uni.navigateTo({
-					url: '/pages_echarts/bloodPressureList'
+					url: '/pages_echarts/bloodPressureList?userId='+this.userId
 				})
 			},
-			goToUser() {
+			navgetTo() {
 				uni.navigateTo({
-					url: '/pages_health/addUser?type=edit&docId='
+					url: '/pages_echarts/bloodPressureDetail?type=add&userId='+this.userId
 				})
 			}
 		}

+ 126 - 39
pages_echarts/bloodPressureDetail.vue

@@ -29,7 +29,7 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleSBPScale" :minVal="0" :maxVal="300" :int="true" :single="10" :h="h" :active="sbp" :scroll="false" :style="style"
+				<simpleScale ref="simpleSBPScale" :minVal="0" :maxVal="300" :int="true" :single="10" :h="h" :active="sbp"  :style="style"
 					@value="getSBPScroll" />
 			</view> 
 			<view class="datebox-detail-header flex-bt" style="margin-top: 48rpx;">
@@ -40,14 +40,19 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleDBPScale" :minVal="0" :maxVal="300" :int="true" :single="10" :h="h" :active="dbp" :scroll="false" :style="style"
+				<simpleScale ref="simpleDBPScale" :minVal="0" :maxVal="300" :int="true" :single="10" :h="h" :active="dbp" :style="style"
 					@value="getDBPScroll" />
 			</view>
 		</view>
+		<view class="h40"></view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">记录</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import {addData,getDataById,getLatest,updateData} from '@/api/healthUser.js'
 	import simpleScale from "@/pages_echarts/components/simpleScale/simpleScale.vue"
 	// import { bpInfo } from "@/api/pages_watch/healthMonitoring.js"
 	export default {
@@ -57,11 +62,11 @@
 		data() {
 			return {
 				// 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
-				startDate: "2020-01-01",
+				startDate:this.utils.timeFormat(new Date()) ,
 				// 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
 				endDate: this.utils.timeFormat(new Date()),
-				date: "2024-01-01",
-				time: "17:12",
+				date: this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				time: this.utils.timeFormat(new Date(),'hh:MM:ss'),
 				// 收缩压
 				sbp: "0",
 				// 舒张压
@@ -77,12 +82,20 @@
 				h: uni.upx2px(88)
 			}
 		},
-		onLoad(option) {
-			const param = JSON.parse(option.param)
+		onLoad(options) {
+			console.log(options)
+			this.type=options.type;
+			this.userId=options.userId
+			if(this.type=='edit'){
+				this.id=options.id;
+				this.getDataById();
+				// this.listByIndicator()
+			}
+			
+			// const param = JSON.parse(option.param)
 			// this.date = param.createTime && param.createTime.split(' ')[0]
 			// this.time = param.createTime && param.createTime.substring(11, 16)
-			// this.sbp = String(param.sbp || 0)
-			// this.dbp = String(param.dbp || 0)
+			// this.active = String(param.num || 0)
 			this.$nextTick(()=>{
 				this.$refs.simpleSBPScale.init()
 				this.$refs.simpleDBPScale.init()
@@ -103,38 +116,91 @@
 			getDBPScroll(e) {
 				this.dbp = e
 			},
-			// 查询数据
-			getList() {
-				this.loading = true
-				const param = {
-					startTime: this.date.replace(/-/g, '/') +" " +this.time + ":00",
-					endTime: this.date.replace(/-/g, '/') +" " + this.time + ":59",
-					deviceId: uni.getStorageSync("deviceId"),
+			getDataById(){
+				getDataById({id:this.id}).then(
+					res => {
+						if(res.code==200){
+							this.date=res.data.measurementDate
+							this.time=res.data.measurementTime
+							this.sbp= res.data.value1?String(res.data.value1):'0'
+							this.dbp= res.data.value1?String(res.data.value2):'0'
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit(){
+				var data={
+					userId:this.userId,
+					"measurementType": 3, //测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+					"value1": this.sbp, //数值1(测量值1 测量值只有一个时默认填写/身高cm/舒张压)
+					"value2": this.dbp,
+					"measurementDate": this.date, //测量日期 yyyy-MM-dd
+					"measurementTime":this.time//测量时间 HH:mm:ss
+				}
+				if(this.type=="add"){
+					this.addData(data)
+				}
+				else if(this.type=="edit"){
+					data.id=this.id
+					this.updateData(data)
 				}
-				bpInfo(param).then(res => {
-					this.loading = false
-					if (res.code == 200) {
-						if(res.data && res.data.length > 0) {
-							this.date = res.data[0].createTime && res.data[0].createTime.split(' ')[0]
-							this.time = res.data[0].createTime && res.data[0].createTime.substring(11, 16)
-							this.sbp = String(res.data[0].sbp || 0)
-							this.dbp = String(res.data[0].dbp || 0)
-							console.log(this.sbp,this.dbp)
-						} else {
-							this.sbp = "0"
-							this.dbp = "0"
+			
+			},
+			addData(data){
+				addData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "操作成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshBloodPressureList');
+								 // uni.$emit('refreshBloodPressure');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			updateData(data){
+				updateData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "更新成功",
+							 });
+							 setTimeout(function() {
+								uni.$emit('refreshBloodPressureList');
+								// uni.$emit('refreshBloodPressure');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
 						}
-					} else {
-						this.sbp = "0"
-						this.dbp = "0"
-					}
-					this.$nextTick(()=>{
-						this.$refs.simpleSBPScale.init()
-						this.$refs.simpleDBPScale.init()
-					})
-				}).catch(() => {
-					this.loading = false
-				})
+					},
+					rej => {}
+				);
 			}
 		}
 	}
@@ -162,6 +228,27 @@
 		font-size: 32rpx;
 		color: #333333;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #FF5039;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.datebox {
 		padding: 0 32rpx;
 		margin-bottom: 20rpx;

+ 60 - 95
pages_echarts/bloodPressureList.vue

@@ -20,22 +20,23 @@
 			<view class="tab-time">
 				<picker class="birth-picker" mode="date"  fields="month"  @change="bindDateChange">
 					<view class="left-box">
-						<view>{{day}}</view>
+						<view>{{dayName}}</view>
 						<image class="w48 h48" src="../static/images/health/arrow_down.png"></image>
 					</view>
 				</picker>
 			</view>
-			<mescroll-body top="176upx" ref="mescrollRef">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+			<mescroll-body top="176upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @longpress="cancel(item)">
 					<view class="item-top">
-						{{item.date}}
+						{{item.measurementDate}}
 					</view>
-					<view class="bottom-box" v-for="(it,idx) in item.list" :key="idx" @click="showDetail(it)">
+					<view class="bottom-box"  @click="showDetail(item)">
 						<view class="amount-paid">
-							<view :class="'title bg'+it.type">{{it.typeName}}</view>
-							<view class="data">{{it.data}} mmHg</view>
+							<view :class="'title bg'+item.level">{{item.level==0?'正常':item.level==1?'轻微':'严重'}}</view>
+							<view class="data">{{item.value1}} mmHg</view>
 						</view>
-						<view class="time">{{utils.formatDate(it.createTime)}}</view>
+						<view class="time">{{item.measurementTime}}</view>
 					</view>
 				</view>
 			</mescroll-body>
@@ -44,13 +45,14 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getDataList,getLatest,deleteData} from '@/api/healthUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
-				day:this.utils.timeFormat(new Date(),'yyyy年mm月'),
+				day:this.utils.timeFormat(new Date(),'yyyy-mm'),
+				dayName:this.utils.timeFormat(new Date(),'yyyy年mm月'),
 				orderStatus:[
 					{name:"全部",val:""},
 					{name:"正常",val:"0"},
@@ -69,66 +71,28 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-06-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'轻微',
-								data:10.9,
-								createTime:'2025-06-25 22:39:55'
-							},
-							{
-								type:3,
-								typeName:'严重',
-								data:10.9,
-								createTime:'2025-06-25 17:39:55'
-							}
-						],
-						date:'2025-06-25',
-						id:1
-					},
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-02-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'轻微',
-								data:10.9,
-								createTime:'2025-02-25 20:39:55'
-							}
-						],
-						date:'2025-02-25',
-						id:2
-					}
-				]
+				dataList: []
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId
+			uni.$on('refreshBloodPressureList', () => {
+				this.orderStatusValue=''
+				this.mescroll.resetUpScroll()
+				uni.$emit('refreshBloodPressure');
+			})
 		},
 		methods: {
 			// 时间选择
 			bindDateChange: function(e) {
-				this.day = this.utils.timeFormat(new Date(e.target.value),'yyyy年mm月')
+				this.day = this.utils.timeFormat(e.target.value,'yyyy-mm')
+				this.dayName=this.utils.timeFormat(e.target.value,'yyyy年mm月')
+				this.mescroll.resetUpScroll()
 			},
 			navgetTo(index){
 				uni.navigateTo({
@@ -139,19 +103,20 @@
 				var that=this;
 				uni.showModal({
 				    title: '提示',
-				    content: '确定取消订单吗',
+				    content: '确定删除记录吗',
 				    success: function (res) {
 				        if (res.confirm) {
 							var data = {
-								orderId:item.orderId
+								id:item.id
 							};
-							cancelOrder(data).then(res => {
+							deleteData(data).then(res => {
 								if(res.code==200){
 									uni.showToast({
 										icon:'success',
-										title: '订单已取消',
+										title: '删除成功',
 									});
 									 that.mescroll.resetUpScroll()
+									 uni.$emit('refreshBloodPressure');
 								}else{
 									uni.showToast({
 										icon:'none',
@@ -168,9 +133,6 @@
 			// tab切换
 			orderStatusChange(item) {
 				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
 				this.mescroll.resetUpScroll()
 			},
 			mescrollInit(mescroll) {
@@ -184,36 +146,39 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
+					"userId": this.userId,
+					"measurementType": 3, 
+					level:this.orderStatusValue,
+					timeSearch:this.day,
+					pageNum:page.num,
+					pageSize:page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+			getDataList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
 						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					} else {
+						that.dataList = that.data.List.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
 			},
 			showDetail(item){
-				console.log(item,'pp')
+				// console.log(item,'pp')
 				uni.navigateTo({
-					url: '/pages_echarts/bloodPressureDetail'
+					url: '/pages_echarts/bloodPressureDetail?type=edit&id='+item.id+'&userId='+this.userId
 				})
 			}
 		}
@@ -376,13 +341,13 @@
 							margin-right: 18rpx;
 							border-radius:50%;
 						}
-						.bg1{
+						.bg0{
 							background: #52D087;
 						}
-						.bg2{
+						.bg1{
 							background: #FFB992;
 						}
-						.bg3{
+						.bg2{
 							background: #FF5558;
 						}
 						.data{

+ 122 - 44
pages_echarts/bloodSugar.vue

@@ -1,26 +1,26 @@
 <template>
 	<view class="hb column hidden container">
-		<image class="bg" src="/static/images/health/blood_sugar_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/blood_sugar_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
 		<u-navbar title="血糖检测" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
 		</u-navbar>
 		<view class="top-fixed">
 			<!-- tab切换 -->
-			<dateTimePicker @onChange="onChangeTime" :tab-color="'gree'"/>
+			<dateTimePicker @onChange="onChangeTime" :tab-color="'gree'" :form-tab="aIndex"/>
 		</view>
 		<scroll-view class="content" :scroll-y="true">
 			<view class="content-box">
 				<view class="tltle">血糖趋势</view>
 				<view class="subtitle">单位:mmol/L</view>
 				<view class="charts-box">
-					<qiun-data-charts type="area" :opts="opts" :chartData="chartData" />
+					<qiun-data-charts type="area" :opts="opts" :chartData="chartData" tooltipFormat="bpTooltip"/>
 				</view>
 			</view>
 			<view class="content-box">
 				<view class="align-center justify-between">
 					<view class="tltle">血糖异常记录</view>
-					<view class="more" @click="navgetTo()">
+					<view class="more" @click="goPage()">
 						<text>查看更多</text>
 						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 					</view>
@@ -29,21 +29,21 @@
 					<view class="box bg1">
 						<view class="fs32 mb12">正常</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count0}}次</text>
 							<image class="w24 h24" src="/static/images/health/zc_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg2">
 						<view class="fs32 mb12">轻微</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count1}}次</text>
 							<image class="w24 h24" src="/static/images/health/qw_arrow_icon.png"></image>
 						</view>
 					</view>
 					<view class="box bg3">
 						<view class="fs32 mb12">严重</view>
 						<view class="align-center justify-between">
-							<text class="subtitle">4次</text>
+							<text class="subtitle">{{count.count2}}次</text>
 							<image class="w24 h24" src="/static/images/health/yz_arrow_icon.png"></image>
 						</view>
 					</view>
@@ -72,6 +72,8 @@
 </template>
 
 <script>
+		import {getUserInfo} from '@/api/user.js'
+	import {getDataList,getLatest,getLatestList} from '@/api/healthUser.js'
 import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePicker.vue"
 	export default {
 		components: {
@@ -91,12 +93,12 @@ import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePi
 					title: '疾病史',
 					type: "healthHistory",
 					desc: '',
-					bgicon: "/static/images/health/jbs_icon.png",
+					bgicon: "https://user.test.ylrztop.com/images/jbs_icon.png",
 				}, {
 					title: '症状史',
 					type: "symptomHistory",
 					desc: '',
-					bgicon: "/static/images/health/zzs_icon.png",
+					bgicon: "https://user.test.ylrztop.com/images/zzs_icon.png",
 				}],
 				chartData: {},
 				opts: {
@@ -145,8 +147,11 @@ import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePi
 							gradient: true,
 							activeType: "solid"
 						}
-					}
-				}
+					},
+					
+				},
+				count:{},
+				user:null
 			}
 		},
 		computed: {
@@ -156,54 +161,127 @@ import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePi
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
+		onLoad(options) {
+			console.log(options,'--')
+			this.userId=options.userId
 			// 获取系统信息
 			const sys = uni.getSystemInfoSync()
 			this.statusBarHeight = sys.statusBarHeight + 'px'
-			this.getServerData();
-		},
-		onUnload() { //普通页面在 onUnload 生命周期中执行
-			uni.$emit('stop')
+			// this.getServerData(0);
+			uni.$on('refreshBloodSugar', () => {
+				this.aIndex=0
+				this.getServerData(0);
+			})
 		},
-		onHide() { //tabBar页面在onHide生命周期中执行
-			uni.$emit('stop')
-		},
-		onPageScroll(e) {
-			//console.log(e)
-			this.top = e.scrollTop;
+		onShow(){
+			// this.getServerData(0);
 		},
+		// onUnload() { //普通页面在 onUnload 生命周期中执行
+		// 	uni.$emit('stop')
+		// },
+		// onHide() { //tabBar页面在onHide生命周期中执行
+		// 	uni.$emit('stop')
+		// },
+		// onPageScroll(e) {
+		// 	//console.log(e)
+		// 	this.top = e.scrollTop;
+		// },
 		methods: {
 			// tab切换
 			orderStatusChange(item) {
 				this.aIndex = item.val
 			},
-			onChangeTime(time) {
-				const param = {
-					startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
-					endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
-					deviceId: ''
+			onChangeTime(time,tab) {
+				// console.log(time,tab,'----')
+				if (this.userId) {
+					this.examDate=time
+				    this.getServerData(tab);
+				  }
+				// this.getServerData(tab)
+			},
+			getUserInfo(){
+				getUserInfo().then(
+					res => {
+						if(res.code==200){
+							if(res.user!=null){
+								this.user=res.user;
+								// this.getServerData(0)
+							}
+							else{
+								this.utils.loginOut();
+							}
+							
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getServerData(index) {
+				var that=this
+				var data={
+					userId:this.userId, 
+					measurementType: 2, 
+					pageNum:1,
+					pageSize:100,
+					timeSearch:this.examDate,
+					// "value1": 85, 
+					// "measurementTime": this.utils.timeFormat(new Date(),'hh:MM:ss')
 				}
-				// this.queryParam = param
-				// this.getServerData(param)
-				// this.getAbnormalInfo(param)
+				
+				const weekMap= {
+				  1: '一',
+				  2: '二',
+				  3: '三',
+				  4: '四',
+				  5: '五',
+				  6: '六',
+				  0: '日' // 注意:JavaScript中getDay()返回0表示周日
+				};
+				getLatestList(data).then(
+					res => {
+						 uni.hideLoading();
+						if (res.code == 200) {
+						   this.count=res.count
+							var list=res.data.list
+							var time=list.map(item => item.measurementTime).reverse()
+							var week=list.map(item => '周'+weekMap[item.week]).reverse()
+							var month=list.map(item => item.measurementDate).reverse()
+							 setTimeout(() => {
+							 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+							 	let res = {
+							 		categories:index==0?time:index==1?week:month,
+							 		series: [{
+							 			name: "测量值",
+							 			data: list.map(item => item.value1).reverse()
+							 		}
+							 		]
+							 	};
+							 	this.chartData = JSON.parse(JSON.stringify(res));
+							 }, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				)
+				
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["00:00", "06:00", "12:00", "18:00", "23:59"],
-						series: [{
-							name: "血糖",
-							data: [35, 8, 25, 37, 4]
-						}]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
+			goPage(index) {
+				uni.navigateTo({
+					url: '/pages_echarts/bloodSugarList?userId='+this.userId
+				})
 			},
 			navgetTo(index) {
 				uni.navigateTo({
-					url: '/pages_echarts/bloodSugarList'
+					url: '/pages_echarts/bloodSugarDetail?type=add&userId='+this.userId
 				})
 			},
 			goToUser() {

+ 150 - 8
pages_echarts/bloodSugarDetail.vue

@@ -29,14 +29,19 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleScale" :minVal="0" :maxVal="33" :int="false" :single="10" :h="h" :active="active" :scroll="false" :style="style"
+				<simpleScale ref="simpleScale" :minVal="0" :maxVal="33" :int="false" :single="10" :h="h" :active="active" :style="style"
 					@value="getScroll" />
 			</view>
 		</view>
+		<view class="h40"></view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">记录</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import {addData,getDataById,getLatest,updateData} from '@/api/healthUser.js'
 	import simpleScale from "@/pages_echarts/components/simpleScale/simpleScale.vue"
 	// import { bgInfo } from "@/api/pages_watch/healthMonitoring.js"
 	export default {
@@ -45,13 +50,12 @@
 		},
 		data() {
 			return {
-				// 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
-				startDate: "2020-01-01",
+				startDate:this.utils.timeFormat(new Date()) ,
 				// 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
 				endDate: this.utils.timeFormat(new Date()),
-				date: "2024-01-01",
-				time: "17:12",
-				active: "6",
+				date: this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				time: this.utils.timeFormat(new Date(),'hh:MM:ss'),
+				active: "0",
 				loading: false,
 				style: {
 					line: '#ccc',
@@ -60,10 +64,19 @@
 					fontColor: '#333',
 					fontSize: 16
 				},
-				h: uni.upx2px(88)
+				h: uni.upx2px(88),
 			}
 		},
-		onLoad(option) {
+		onLoad(options) {
+			console.log(options)
+			this.type=options.type;
+			this.userId=options.userId
+			if(this.type=='edit'){
+				this.id=options.id;
+				this.getDataById();
+				// this.listByIndicator()
+			}
+			
 			// const param = JSON.parse(option.param)
 			// this.date = param.createTime && param.createTime.split(' ')[0]
 			// this.time = param.createTime && param.createTime.substring(11, 16)
@@ -84,6 +97,114 @@
 			getScroll(e) {
 				this.active = e
 			},
+			getDataById(){
+				getDataById({id:this.id}).then(
+					res => {
+						if(res.code==200){
+							this.date=res.data.measurementDate
+							this.time=res.data.measurementTime
+							this.active= String(res.data.value1)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit(){
+				var data={
+					userId:this.userId,
+					"measurementType": 2, //测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+					"value1": this.active, //数值1(测量值1 测量值只有一个时默认填写/身高cm/舒张压)
+					"measurementDate": this.date, //测量日期 yyyy-MM-dd
+					"measurementTime":this.time//测量时间 HH:mm:ss
+				}
+				if(this.type=="add"){
+					this.addData(data)
+				}
+				else if(this.type=="edit"){
+					data.id=this.id
+					this.updateData(data)
+				}
+			
+			},
+			addData(data){
+				addData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "操作成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshBloodSugarList');
+								 // uni.$emit('refreshBloodSugar');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			updateData(data){
+				updateData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "更新成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshBloodSugarList');
+								 // uni.$emit('refreshBloodSugar');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getLatest(){
+				var data={
+					userId:this.userId,
+					measurementType:2
+				}
+				getLatest(data).then(
+					res => {
+						if(res.code==200){
+							if(res.data==null){
+								this.type='add'
+							}else{
+								this.type='edit'
+								this.form = res.data;
+							}
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
 			// 查询数据
 			getList() {
 				this.loading = true
@@ -139,6 +260,27 @@
 		font-size: 32rpx;
 		color: #333333;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #2CAE5C;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.datebox {
 		padding: 0 32rpx;
 		margin-bottom: 20rpx;

+ 85 - 120
pages_echarts/bloodSugarList.vue

@@ -20,22 +20,23 @@
 			<view class="tab-time">
 				<picker class="birth-picker" mode="date"  fields="month"  @change="bindDateChange">
 					<view class="left-box">
-						<view>{{day}}</view>
+						<view>{{dayName}}</view>
 						<image class="w48 h48" src="../static/images/health/arrow_down.png"></image>
 					</view>
 				</picker>
 			</view>
-			<mescroll-body top="176upx" ref="mescrollRef">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+			<mescroll-body top="176upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @longpress="cancel(item)">
 					<view class="item-top">
-						{{item.date}}
+						{{item.measurementDate}}
 					</view>
-					<view class="bottom-box" v-for="(it,idx) in item.list" :key="idx" @click="showDetail(it)">
+					<view class="bottom-box"  @click="showDetail(item)">
 						<view class="amount-paid">
-							<view :class="'title bg'+it.type">{{it.typeName}}</view>
-							<view class="data">{{it.data}} mmol/L</view>
+							<view :class="'title bg'+item.level">{{item.level==0?'正常':item.level==1?'轻微':'严重'}}</view>
+							<view class="data">{{item.value1}} mmol/L</view>
 						</view>
-						<view class="time">{{utils.formatDate(it.createTime)}}</view>
+						<view class="time">{{item.measurementTime}}</view>
 					</view>
 				</view>
 			</mescroll-body>
@@ -44,13 +45,14 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getDataList,getLatest,deleteData} from '@/api/healthUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
-				day:this.utils.timeFormat(new Date(),'yyyy年mm月'),
+				day:this.utils.timeFormat(new Date(),'yyyy-mm'),
+				dayName:this.utils.timeFormat(new Date(),'yyyy年mm月'),
 				orderStatus:[
 					{name:"全部",val:""},
 					{name:"正常",val:"0"},
@@ -69,108 +71,68 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-06-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'轻微',
-								data:10.9,
-								createTime:'2025-06-25 22:39:55'
-							},
-							{
-								type:3,
-								typeName:'严重',
-								data:10.9,
-								createTime:'2025-06-25 17:39:55'
-							}
-						],
-						date:'2025-06-25',
-						id:1
-					},
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-02-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'轻微',
-								data:10.9,
-								createTime:'2025-02-25 20:39:55'
-							}
-						],
-						date:'2025-02-25',
-						id:2
-					}
-				]
+				dataList: []
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId
+			uni.$on('refreshBloodSugarList', () => {
+				this.orderStatusValue=''
+				this.mescroll.resetUpScroll()
+				uni.$emit('refreshBloodSugar');
+			})
 		},
 		methods: {
 			// 时间选择
 			bindDateChange: function(e) {
-				this.day = this.utils.timeFormat(new Date(e.target.value),'yyyy年mm月')
+				this.day = this.utils.timeFormat(e.target.value,'yyyy-mm')
+				this.dayName=this.utils.timeFormat(e.target.value,'yyyy年mm月')
+				this.mescroll.resetUpScroll()
 			},
 			navgetTo(index){
 				uni.navigateTo({
 					url: index==0?'/pages_health/addServe':'/pages_health/addCompetitors'
 				})
 			},
-			cancel(item){
-				var that=this;
-				uni.showModal({
-				    title: '提示',
-				    content: '确定取消订单吗',
-				    success: function (res) {
-				        if (res.confirm) {
-							var data = {
-								orderId:item.orderId
-							};
-							cancelOrder(data).then(res => {
-								if(res.code==200){
-									uni.showToast({
-										icon:'success',
-										title: '订单已取消',
-									});
-									 that.mescroll.resetUpScroll()
-								}else{
-									uni.showToast({
-										icon:'none',
-										title: res.msg,
-									});
-								}
+	cancel(item){
+		var that=this;
+		uni.showModal({
+		    title: '提示',
+		    content: '确定删除记录吗',
+		    success: function (res) {
+		        if (res.confirm) {
+					var data = {
+						id:item.id
+					};
+					deleteData(data).then(res => {
+						if(res.code==200){
+							uni.showToast({
+								icon:'success',
+								title: '删除成功',
 							});
-				        } 
-						else if (res.cancel) {
-				        }
-				    }
-				});
-			},
+							 that.mescroll.resetUpScroll()
+							 uni.$emit('refreshBloodSugar');
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					});
+		        } 
+				else if (res.cancel) {
+		        }
+		    }
+		});
+	},
 			// tab切换
 			orderStatusChange(item) {
 				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
 				this.mescroll.resetUpScroll()
 			},
 			mescrollInit(mescroll) {
@@ -184,36 +146,39 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
+					"userId": this.userId,
+					"measurementType": 2, 
+					level:this.orderStatusValue,
+					timeSearch:this.day,
+					pageNum:page.num,
+					pageSize:page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+			getDataList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
 						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					} else {
+						that.dataList = that.data.List.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
 			},
 			showDetail(item){
-				console.log(item,'pp')
+				// console.log(item,'pp')
 				uni.navigateTo({
-					url: '/pages_echarts/bloodSugarDetail'
+					url: '/pages_echarts/bloodSugarDetail?type=edit&id='+item.id+'&userId='+this.userId
 				})
 			}
 		}
@@ -376,13 +341,13 @@
 							margin-right: 18rpx;
 							border-radius:50%;
 						}
-						.bg1{
+						.bg0{
 							background: #52D087;
 						}
-						.bg2{
+						.bg1{
 							background: #FFB992;
 						}
-						.bg3{
+						.bg2{
 							background: #FF5558;
 						}
 						.data{

+ 22 - 4
pages_echarts/components/dateTimePicker/dateTimePicker.vue

@@ -46,6 +46,10 @@
 				type: Number,
 				default: 0
 			},
+			formTab:{
+				type: Number,
+				default: 0
+			},
 			from: {
 				type: String,
 				default: ""
@@ -108,8 +112,19 @@
 			}
 			this.resetTime()
 		},
+		mounted(){
+			if(this.formTab!==null){
+				var item={
+						label: '每日',
+						value: 'day'
+					}
+				this.handleTab(item,this.formTab)	
+			}
+			// this.activeTab=this.formTab
+		},
 		methods: {
 			handleTab(item,index) {
+				// console.log(index,'zhix')
 				this.activeTab = index
 				this.fields = item.value == 'week' ? 'day' : item.value
 				if(this.activeTab == 0) { // 每日
@@ -169,23 +184,26 @@
 			},
 			resetTime() {
 				if(this.activeTab == 0) { // 每日
-					this.startTime = this.value + " 00:00:00"
+					this.startTime = this.value
 					this.endTime = this.value + " 23:59:59"
+					this.$emit("onChange",this.startTime,this.activeTab)
 				} else if(this.activeTab == 1) { // 每周
 					let y = this.value.split('-')[0];
 					let m = this.value.split('-')[1];
 					let res =  weekjs.getWeeksByMonth(y, m,this.value,0); 
 					this.weekValue = res.week.formatVal
-					this.startTime = this.weekValue.split('至')[0] + " 00:00:00"
-					this.endTime = this.weekValue.split('至')[1] + " 23:59:59"
+					this.startTime = this.weekValue.split('至')[0]
+					this.endTime = this.weekValue.split('至')[1]
+					this.$emit("onChange",this.startTime+';'+this.endTime,this.activeTab)
 				} else if(this.activeTab == 2) { // 每月
 					this.startTime = this.utils.timeFormat(this.value, 'yyyy-mm-dd') + " 00:00:00"
 					const currentYear = this.value.split('-')[0]
 					const currentMonth = this.value.split('-')[1]
 					const lastday = new Date(currentYear, currentMonth, 0)
 					this.endTime = this.utils.timeFormat(lastday, 'yyyy-mm-dd') + " 23:59:59"
+					this.$emit("onChange",this.value,this.activeTab)
 				}
-				this.$emit("onChange",[this.startTime,this.endTime,this.value,this.activeTab])
+				
 			},
 			getWeeks(res) {
 			    if (res) { 

+ 7 - 3
pages_echarts/components/simpleScale/simpleScale.vue

@@ -206,18 +206,22 @@ export default {
     };
   },
   computed: {},
-  watch: {},
+  watch: {
+	  active(index){
+		  this.init();
+	  }
+  },
   onReady() {
     // const min = parseInt(this.min, 10) || 0;
     // const max = parseInt(this.max, 10) || 100;
     // this.min = min;
     // this.max = max;
-    // this.init();
+    
   },
   created() {
   },
   mounted() {
-	  // this.init();
+	  //this.init();
   },
   methods: {
     // 初始化

+ 133 - 30
pages_echarts/hips.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="hb column hidden container">
-		<image class="bg" src="/static/images/health/hips_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/hips_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
 		<u-navbar title="臀围" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
@@ -31,7 +31,7 @@
 				<view class="charts-box">
 					<qiun-data-charts type="line" :opts="opts" :chartData="chartData" />
 				</view>
-				<view class="legend">
+				<!-- <view class="legend">
 					<view class="legend-item">
 						<view class="legend-dot" style="background-color: #52D087;"></view><text>正常</text>
 					</view>
@@ -41,6 +41,38 @@
 					<view class="legend-item">
 						<view class="legend-dot" style="background-color: #FF5030;"></view><text>偏大</text>
 					</view>
+				</view> -->
+			</view>
+			<view class="content-box">
+				<view class="align-center justify-between">
+					<view class="tltle">臀围异常记录</view>
+					<view class="more" @click="goPage()">
+						<text>查看更多</text>
+						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+					</view>
+				</view>
+				<view class="type-box">
+					<view class="box bg1">
+						<view class="fs32 mb12">正常</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{JSON.stringify(count.count0)}}次</text>
+							<image class="w24 h24" src="/static/images/health/zc_arrow_icon.png"></image>
+						</view>
+					</view>
+					<view class="box bg2">
+						<view class="fs32 mb12">偏小</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{count.count1}}次</text>
+							<image class="w24 h24" src="/static/images/health/qw_arrow_icon.png"></image>
+						</view>
+					</view>
+					<view class="box bg3">
+						<view class="fs32 mb12">偏大</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{count.count2}}次</text>
+							<image class="w24 h24" src="/static/images/health/yz_arrow_icon.png"></image>
+						</view>
+					</view>
 				</view>
 			</view>
 			<view class="h40"></view>
@@ -52,13 +84,15 @@
 </template>
 
 <script>
+	import {getDataList,getLatest,getLatestList} from '@/api/healthUser.js'
 	import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePicker.vue"
 	export default {
 		components: {
 			dateTimePicker
-		},	
+		},
 		data() {
 			return {
+				examDate:null,
 				statusBarHeight: '',
 				top: 0,
 				aIndex: 0,
@@ -111,7 +145,9 @@
 						             activeType: "hollow"
 						           }
 					}
-				}
+				},
+				count:{},
+				user:null
 			}
 		},
 		computed: {
@@ -121,11 +157,15 @@
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
+		onLoad(options) {
 			// 获取系统信息
 			const sys = uni.getSystemInfoSync()
 			this.statusBarHeight = sys.statusBarHeight + 'px'
-			this.getServerData();
+			this.userId=options.userId
+			uni.$on('refreshHips', () => {
+				this.aIndex=0
+				this.getServerData(0);
+			})
 		},
 		onUnload() { //普通页面在 onUnload 生命周期中执行
 			uni.$emit('stop')
@@ -142,35 +182,71 @@
 			orderStatusChange(item) {
 				this.aIndex = item.val
 			},
-			onChangeTime(time) {
-				const param = {
-					startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
-					endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
-					deviceId: ''
-				}
-				// this.queryParam = param
-				// this.getServerData(param)
-				// this.getAbnormalInfo(param)
+			onChangeTime(time,tab) {
+				if (this.userId) {
+					this.examDate=time
+				    this.getServerData(tab);
+				  }
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["周一", "周二", "周三", "周四", "周五"],
-						series: [{
-							name: "测量值",
-							data:[0,100,0,0,0]
+			getServerData(index) {
+				var that=this
+				var data={
+					userId: this.userId, 
+					measurementType: 1, 
+					pageNum:1,
+					pageSize:100,
+					timeSearch:this.examDate,
+					// "value1": 85, 
+					// "measurementTime": this.utils.timeFormat(new Date(),'hh:MM:ss')
+				}
+				const weekMap= {
+				  1: '一',
+				  2: '二',
+				  3: '三',
+				  4: '四',
+				  5: '五',
+				  6: '六',
+				  0: '日' // 注意:JavaScript中getDay()返回0表示周日
+				};
+				getLatestList(data).then(
+					res => {
+						if (res.code == 200) {
+							 this.count=res.count
+							var list=res.data.list
+							var time=list.map(item => item.measurementTime).reverse()
+							var week=list.map(item => '周'+weekMap[item.week]).reverse()
+							var month=list.map(item => item.measurementDate).reverse()
+							 setTimeout(() => {
+							 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+							 	let res = {
+							 		categories:index==0?time:index==1?week:month,
+							 		series: [{
+							 			name: "测量值",
+							 			data: list.map(item => item.value1)
+							 		}
+							 		]
+							 	};
+							 	this.chartData = JSON.parse(JSON.stringify(res));
+							 }, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
 						}
-
-						]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
+					},
+					rej => {}
+				)
+				
+			},
+			goPage(index) {
+				uni.navigateTo({
+					url: '/pages_echarts/hipsList?userId='+this.userId
+				})
 			},
 			navgetTo(index) {
 				uni.navigateTo({
-					url: '/pages_echarts/hipsList'
+					url: '/pages_echarts/hipsDetail?type=add&userId='+this.userId
 				})
 			},
 			goToUser() {
@@ -313,7 +389,34 @@
 				text-align: left;
 
 			}
+	.type-box {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-top: 20rpx;
+
+				.box {
+					padding: 24rpx;
+					width: 158rpx;
+					// height: 144rpx;
+					border-radius: 16rpx 16rpx 16rpx 16rpx;
 
+					&.bg1 {
+						background: #FAFFFC;
+						border: 2rpx solid #EBFFF3;
+					}
+
+					&.bg2 {
+						background: #FEFAF8;
+						border: 2rpx solid #FDF7F3;
+					}
+
+					&.bg3 {
+						background: #FFFCFC;
+						border: 2rpx solid #FCF4F4;
+					}
+				}
+			}
 			/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
 			.charts-box {
 				padding: 24rpx;

+ 157 - 16
pages_echarts/hipsDetail.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container">
 		<view class="datebox">
-			<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
+			<picker mode="date" :value="date" :start="startDate"  @change="bindDateChange">
 				<view class="datebox-item border-line flex-bt">
 					<view>日期</view>
 					<view class="datebox-item-right">
@@ -10,7 +10,7 @@
 					</view>
 				</view>
 			</picker>
-			<picker mode="time" :value="time" @change="bindTimeChange">
+			<picker mode="time" fields="second" :value="time" @change="bindTimeChange" >
 				<view class="datebox-item flex-bt">
 					<view>测量时间</view>
 					<view class="datebox-item-right">
@@ -29,14 +29,20 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleScale" :minVal="0" :maxVal="33" :int="false" :single="10" :h="h" :active="active" :scroll="false" :style="style"
+				<simpleScale ref="simpleScale" :minVal="0" :maxVal="200" :int="false" :single="10" :h="h" :active="active" :style="style"
 					@value="getScroll" />
 			</view>
 		</view>
+		<view class="h40"></view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">记录</view>
+		</view>
 	</view>
 </template>
 
 <script>
+
+import {addData,getDataById,getLatest,updateData} from '@/api/healthUser.js'
 	import simpleScale from "@/pages_echarts/components/simpleScale/simpleScale.vue"
 	// import { bgInfo } from "@/api/pages_watch/healthMonitoring.js"
 	export default {
@@ -46,12 +52,12 @@
 		data() {
 			return {
 				// 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
-				startDate: "2020-01-01",
+				startDate:this.utils.timeFormat(new Date()) ,
 				// 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
 				endDate: this.utils.timeFormat(new Date()),
-				date: "2024-01-01",
-				time: "17:12",
-				active: "6",
+				date: this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				time: this.utils.timeFormat(new Date(),'hh:MM:ss'),
+				active: "0",
 				loading: false,
 				style: {
 					line: '#ccc',
@@ -60,14 +66,19 @@
 					fontColor: '#333',
 					fontSize: 16
 				},
-				h: uni.upx2px(88)
+				h: uni.upx2px(88),
+				form:null
 			}
 		},
-		onLoad(option) {
-			// const param = JSON.parse(option.param)
-			// this.date = param.createTime && param.createTime.split(' ')[0]
-			// this.time = param.createTime && param.createTime.substring(11, 16)
-			// this.active = String(param.num || 0)
+		onLoad(options) {
+			console.log(options)
+			this.type=options.type;
+			this.userId=options.userId
+			if(this.type=='edit'){
+				this.id=options.id;
+				this.getDataById();
+				// this.listByIndicator()
+			}
 			this.$nextTick(()=>{
 				this.$refs.simpleScale.init()
 			})
@@ -75,15 +86,124 @@
 		methods: {
 			bindDateChange(e) {
 				this.date = e.detail.value
-				this.getList()
+				// this.getList()
 			},
 			bindTimeChange(e) {
-				this.time = e.detail.value
-				this.getList()
+				// console.log(e,'e')
+				this.time = e.detail.value+':00'
+				// this.getList()
 			},
 			getScroll(e) {
+				// console.log(e,'e')
 				this.active = e
 			},
+			getDataById(){
+				getDataById({id:this.id}).then(
+					res => {
+						if(res.code==200){
+							this.date=res.data.measurementDate
+							this.time=res.data.measurementTime
+							this.active= String(res.data.value1)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit(){
+				var data={
+					userId:this.userId,
+					"measurementType": 1, //测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+					"value1": this.active, //数值1(测量值1 测量值只有一个时默认填写/身高cm/舒张压)
+					"measurementDate": this.date, //测量日期 yyyy-MM-dd
+					"measurementTime":this.time//测量时间 HH:mm:ss
+				}
+				if(this.type=="add"){
+					this.addData(data)
+				}
+				else if(this.type=="edit"){
+					data.id=this.id
+					this.updateData(data)
+				}
+			
+			},
+			addData(data){
+				addData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "操作成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshHipsList');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			updateData(data){
+				updateData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "更新成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshHipsList');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getLatest(){
+				var data={
+					userId:this.userId,
+					measurementType:1
+				}
+				getLatest(data).then(
+					res => {
+						if(res.code==200){
+							if(res.data==null){
+								this.type='add'
+							}else{
+								this.type='edit'
+								this.form = res.data;
+							}
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		
 			// 查询数据
 			getList() {
 				this.loading = true
@@ -139,6 +259,27 @@
 		font-size: 32rpx;
 		color: #333333;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #7A73E0;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.datebox {
 		padding: 0 32rpx;
 		margin-bottom: 20rpx;

+ 85 - 120
pages_echarts/hipsList.vue

@@ -20,22 +20,23 @@
 			<view class="tab-time">
 				<picker class="birth-picker" mode="date"  fields="month"  @change="bindDateChange">
 					<view class="left-box">
-						<view>{{day}}</view>
+						<view>{{dayName}}</view>
 						<image class="w48 h48" src="../static/images/health/arrow_down.png"></image>
 					</view>
 				</picker>
 			</view>
-			<mescroll-body top="176upx" ref="mescrollRef">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+			<mescroll-body top="176upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @longpress="cancel(item)">
 					<view class="item-top">
-						{{item.date}}
+						{{item.measurementDate}}
 					</view>
-					<view class="bottom-box" v-for="(it,idx) in item.list" :key="idx" @click="showDetail(it)">
+					<view class="bottom-box"  @click="showDetail(item)">
 						<view class="amount-paid">
-							<view :class="'title bg'+it.type">{{it.typeName}}</view>
-							<view class="data">{{it.data}} CM</view>
+							<view :class="'title bg'+item.level">{{item.level==0?'正常':item.level==1?'偏小':'偏大'}}</view>
+							<view class="data">{{item.value1}} cm</view>
 						</view>
-						<view class="time">{{utils.formatDate(it.createTime)}}</view>
+						<view class="time">{{item.measurementTime}}</view>
 					</view>
 				</view>
 			</mescroll-body>
@@ -44,13 +45,14 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getDataList,getLatest,deleteData} from '@/api/healthUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
-				day:this.utils.timeFormat(new Date(),'yyyy年mm月'),
+				day:this.utils.timeFormat(new Date(),'yyyy-mm'),
+				dayName:this.utils.timeFormat(new Date(),'yyyy年mm月'),
 				orderStatus:[
 					{name:"全部",val:""},
 					{name:"正常",val:"0"},
@@ -69,108 +71,68 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-06-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'偏小',
-								data:10.9,
-								createTime:'2025-06-25 22:39:55'
-							},
-							{
-								type:3,
-								typeName:'偏大',
-								data:10.9,
-								createTime:'2025-06-25 17:39:55'
-							}
-						],
-						date:'2025-06-25',
-						id:1
-					},
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-02-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'偏小',
-								data:10.9,
-								createTime:'2025-02-25 20:39:55'
-							}
-						],
-						date:'2025-02-25',
-						id:2
-					}
-				]
+				dataList: []
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId
+			uni.$on('refreshHipsList', () => {
+				this.orderStatusValue=''
+				this.mescroll.resetUpScroll()
+				uni.$emit('refreshHips');
+			})
 		},
 		methods: {
 			// 时间选择
 			bindDateChange: function(e) {
-				this.day = this.utils.timeFormat(new Date(e.target.value),'yyyy年mm月')
+				this.day = this.utils.timeFormat(e.target.value,'yyyy-mm')
+				this.dayName=this.utils.timeFormat(e.target.value,'yyyy年mm月')
+				this.mescroll.resetUpScroll()
 			},
 			navgetTo(index){
 				uni.navigateTo({
 					url: index==0?'/pages_health/addServe':'/pages_health/addCompetitors'
 				})
 			},
-			cancel(item){
-				var that=this;
-				uni.showModal({
-				    title: '提示',
-				    content: '确定取消订单吗',
-				    success: function (res) {
-				        if (res.confirm) {
-							var data = {
-								orderId:item.orderId
-							};
-							cancelOrder(data).then(res => {
-								if(res.code==200){
-									uni.showToast({
-										icon:'success',
-										title: '订单已取消',
-									});
-									 that.mescroll.resetUpScroll()
-								}else{
-									uni.showToast({
-										icon:'none',
-										title: res.msg,
-									});
-								}
+	cancel(item){
+		var that=this;
+		uni.showModal({
+		    title: '提示',
+		    content: '确定删除记录吗',
+		    success: function (res) {
+		        if (res.confirm) {
+					var data = {
+						id:item.id
+					};
+					deleteData(data).then(res => {
+						if(res.code==200){
+							uni.showToast({
+								icon:'success',
+								title: '删除成功',
 							});
-				        } 
-						else if (res.cancel) {
-				        }
-				    }
-				});
-			},
+							 that.mescroll.resetUpScroll()
+							 uni.$emit('refreshHips');
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					});
+		        } 
+				else if (res.cancel) {
+		        }
+		    }
+		});
+	},
 			// tab切换
 			orderStatusChange(item) {
 				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
 				this.mescroll.resetUpScroll()
 			},
 			mescrollInit(mescroll) {
@@ -184,36 +146,39 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
+					"userId": this.userId,
+					"measurementType": 1, 
+					level:this.orderStatusValue,
+					timeSearch:this.day,
+					pageNum:page.num,
+					pageSize:page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+			getDataList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
 						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					} else {
+						that.dataList = that.data.List.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
 			},
 			showDetail(item){
-				console.log(item,'pp')
+				// console.log(item,'pp')
 				uni.navigateTo({
-					url: '/pages_echarts/hipsDetail'
+					url: '/pages_echarts/hipsDetail?type=edit&id='+item.id+'&userId='+this.userId
 				})
 			}
 		}
@@ -376,13 +341,13 @@
 							margin-right: 18rpx;
 							border-radius:50%;
 						}
-						.bg1{
+						.bg0{
 							background: #52D087;
 						}
-						.bg2{
+						.bg1{
 							background: #FFB992;
 						}
-						.bg3{
+						.bg2{
 							background: #FF5558;
 						}
 						.data{

+ 141 - 26
pages_echarts/waistLine.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="hb column hidden container">
-		<image class="bg" src="/static/images/health/waist_circumference_top_bg.png" mode="widthFix"></image>
+		<image class="bg" src="https://user.test.ylrztop.com/images/waist_circumference_top_bg.png" mode="widthFix"></image>
 		<view :style="{height: statusBarHeight,background: bgColor }"></view>
 		<u-navbar title="腰围" titleStyle="font-weight: bold;" @rightClick="rightClick" :autoBack="true"
 			:bg-color="bgColor">
@@ -31,7 +31,7 @@
 				<view class="charts-box">
 					<qiun-data-charts type="line" :opts="opts" :chartData="chartData" />
 				</view>
-				<view class="legend">
+				<!-- <view class="legend">
 					<view class="legend-item">
 						<view class="legend-dot" style="background-color: #52D087;"></view><text>正常</text>
 					</view>
@@ -41,6 +41,38 @@
 					<view class="legend-item">
 						<view class="legend-dot" style="background-color: #FF5030;"></view><text>偏大</text>
 					</view>
+				</view> -->
+			</view>
+			<view class="content-box">
+				<view class="align-center justify-between">
+					<view class="tltle">腰围异常记录</view>
+					<view class="more" @click="goPage()">
+						<text>查看更多</text>
+						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
+					</view>
+				</view>
+				<view class="type-box">
+					<view class="box bg1">
+						<view class="fs32 mb12">正常</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{count.count0}}次</text>
+							<image class="w24 h24" src="/static/images/health/zc_arrow_icon.png"></image>
+						</view>
+					</view>
+					<view class="box bg2">
+						<view class="fs32 mb12">偏小</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{count.count1}}次</text>
+							<image class="w24 h24" src="/static/images/health/qw_arrow_icon.png"></image>
+						</view>
+					</view>
+					<view class="box bg3">
+						<view class="fs32 mb12">偏大</view>
+						<view class="align-center justify-between">
+							<text class="subtitle">{{count.count2}}次</text>
+							<image class="w24 h24" src="/static/images/health/yz_arrow_icon.png"></image>
+						</view>
+					</view>
 				</view>
 			</view>
 			<view class="h40"></view>
@@ -52,6 +84,7 @@
 </template>
 
 <script>
+	import {getDataList,getLatest,getLatestList} from '@/api/healthUser.js'
 	import dateTimePicker from "@/pages_echarts/components/dateTimePicker/dateTimePicker.vue"
 	export default {
 		components: {
@@ -59,6 +92,7 @@
 		},
 		data() {
 			return {
+				examDate:null,
 				statusBarHeight: '',
 				top: 0,
 				aIndex: 0,
@@ -111,7 +145,9 @@
 						             activeType: "hollow"
 						           }
 					}
-				}
+				},
+				count:{},
+				user:null
 			}
 		},
 		computed: {
@@ -121,11 +157,18 @@
 				return 'rgba(11,179,242, ' + top + ')';
 			},
 		},
-		onLoad() {
+		onLoad(options) {
 			// 获取系统信息
+			// console.log(options,'===')
+			// this.user=JSON.parse(uni.getStorageSync('userInfo'))
 			const sys = uni.getSystemInfoSync()
 			this.statusBarHeight = sys.statusBarHeight + 'px'
-			this.getServerData();
+			this.userId=options.userId
+			uni.$on('refreshWaistLine', () => {
+				this.aIndex=0
+				this.getServerData(0);
+			})
+			// this.getServerData();
 		},
 		onUnload() { //普通页面在 onUnload 生命周期中执行
 			uni.$emit('stop')
@@ -142,35 +185,79 @@
 			orderStatusChange(item) {
 				this.aIndex = item.val
 			},
-			onChangeTime(time) {
-				const param = {
-					startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
-					endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
-					deviceId: ''
-				}
+			onChangeTime(time,tab) {
+				if (this.userId) {
+					this.examDate=time
+				    this.getServerData(tab);
+				  }
+				// this.examDate = {
+				// 	startTime: this.utils.timeFormat(time[0],'yyyy/mm/dd hh:MM:ss'),
+				// 	endTime: this.utils.timeFormat(time[1],'yyyy/mm/dd hh:MM:ss'),
+				// 	deviceId: ''
+				// }
 				// this.queryParam = param
 				// this.getServerData(param)
 				// this.getAbnormalInfo(param)
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["周一", "周二", "周三", "周四", "周五"],
-						series: [{
-							name: "测量值",
-							data:[0,100,0,0,0]
+			getServerData(index) {
+				var that=this
+				var data={
+					userId: this.userId, 
+					measurementType: 0, 
+					pageNum:1,
+					pageSize:100,
+					timeSearch:this.examDate,
+					// "value1": 85, 
+					// "measurementTime": this.utils.timeFormat(new Date(),'hh:MM:ss')
+				}
+				const weekMap= {
+				  1: '一',
+				  2: '二',
+				  3: '三',
+				  4: '四',
+				  5: '五',
+				  6: '六',
+				  0: '日' // 注意:JavaScript中getDay()返回0表示周日
+				};
+				getLatestList(data).then(
+					res => {
+						if (res.code == 200) {
+							 this.count=res.count
+							var list=res.data.list
+							var time=list.map(item => item.measurementTime).reverse()
+							var week=list.map(item => '周'+weekMap[item.week]).reverse()
+							var month=list.map(item => item.measurementDate).reverse()
+							 setTimeout(() => {
+							 	//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+							 	let res = {
+							 		categories:index==0?time:index==1?week:month,
+							 		series: [{
+							 			name: "测量值",
+							 			data: list.map(item => item.value1)
+							 		}
+							 		]
+							 	};
+							 	this.chartData = JSON.parse(JSON.stringify(res));
+							 }, 500);
+						} else {
+							uni.showToast({
+								icon: 'none',
+								title: res.msg,
+							});
 						}
-
-						]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
+					},
+					rej => {}
+				)
+				
+			},
+			goPage(index) {
+				uni.navigateTo({
+					url: '/pages_echarts/waistLineList?userId='+this.userId
+				})
 			},
 			navgetTo(index) {
 				uni.navigateTo({
-					url: '/pages_echarts/waistLineList'
+					url: '/pages_echarts/waistLineDetail?type=add&userId='+this.userId
 				})
 			},
 			goToUser() {
@@ -312,6 +399,34 @@ padding: 20rpx;
 				text-align: left;
 
 			}
+			.type-box {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-top: 20rpx;
+			
+				.box {
+					padding: 24rpx;
+					width: 158rpx;
+					// height: 144rpx;
+					border-radius: 16rpx 16rpx 16rpx 16rpx;
+			
+					&.bg1 {
+						background: #FAFFFC;
+						border: 2rpx solid #EBFFF3;
+					}
+			
+					&.bg2 {
+						background: #FEFAF8;
+						border: 2rpx solid #FDF7F3;
+					}
+			
+					&.bg3 {
+						background: #FFFCFC;
+						border: 2rpx solid #FCF4F4;
+					}
+				}
+			}
 
 			/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
 			.charts-box {

+ 155 - 16
pages_echarts/waistLineDetail.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container">
 		<view class="datebox">
-			<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
+			<picker mode="date" :value="date" :start="startDate"  @change="bindDateChange">
 				<view class="datebox-item border-line flex-bt">
 					<view>日期</view>
 					<view class="datebox-item-right">
@@ -10,7 +10,7 @@
 					</view>
 				</view>
 			</picker>
-			<picker mode="time" :value="time" @change="bindTimeChange">
+			<picker mode="time" fields="second" :value="time" @change="bindTimeChange" >
 				<view class="datebox-item flex-bt">
 					<view>测量时间</view>
 					<view class="datebox-item-right">
@@ -29,14 +29,19 @@
 				</view>
 			</view>
 			<view class="scale">
-				<simpleScale ref="simpleScale" :minVal="0" :maxVal="33" :int="false" :single="10" :h="h" :active="active" :scroll="false" :style="style"
+				<simpleScale ref="simpleScale" :minVal="0" :maxVal="200" :int="false" :single="10" :h="h" :active="active" :style="style"
 					@value="getScroll" />
 			</view>
 		</view>
+		<view class="h40"></view>
+		<view class="btn-box">
+			<view class="sub-btn" @click="submit()">记录</view>
+		</view>
 	</view>
 </template>
 
 <script>
+import {addData,getDataById,getLatest,updateData} from '@/api/healthUser.js'
 	import simpleScale from "@/pages_echarts/components/simpleScale/simpleScale.vue"
 	// import { bgInfo } from "@/api/pages_watch/healthMonitoring.js"
 	export default {
@@ -46,12 +51,12 @@
 		data() {
 			return {
 				// 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"
-				startDate: "2020-01-01",
+				startDate:this.utils.timeFormat(new Date()) ,
 				// 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"
 				endDate: this.utils.timeFormat(new Date()),
-				date: "2024-01-01",
-				time: "17:12",
-				active: "6",
+				date: this.utils.timeFormat(new Date(),'yyyy-mm-dd'),
+				time: this.utils.timeFormat(new Date(),'hh:MM:ss'),
+				active: "0",
 				loading: false,
 				style: {
 					line: '#ccc',
@@ -60,14 +65,19 @@
 					fontColor: '#333',
 					fontSize: 16
 				},
-				h: uni.upx2px(88)
+				h: uni.upx2px(88),
+				form:null
 			}
 		},
-		onLoad(option) {
-			// const param = JSON.parse(option.param)
-			// this.date = param.createTime && param.createTime.split(' ')[0]
-			// this.time = param.createTime && param.createTime.substring(11, 16)
-			// this.active = String(param.num || 0)
+		onLoad(options) {
+			console.log(options)
+			this.type=options.type;
+			this.userId=options.userId
+			if(this.type=='edit'){
+				this.id=options.id;
+				this.getDataById();
+				// this.listByIndicator()
+			}
 			this.$nextTick(()=>{
 				this.$refs.simpleScale.init()
 			})
@@ -75,15 +85,123 @@
 		methods: {
 			bindDateChange(e) {
 				this.date = e.detail.value
-				this.getList()
+				// this.getList()
 			},
 			bindTimeChange(e) {
-				this.time = e.detail.value
-				this.getList()
+				// console.log(e,'e')
+				this.time = e.detail.value+':00'
+				// this.getList()
 			},
 			getScroll(e) {
+				// console.log(e,'e')
 				this.active = e
 			},
+			getDataById(){
+				getDataById({id:this.id}).then(
+					res => {
+						if(res.code==200){
+							this.date=res.data.measurementDate
+							this.time=res.data.measurementTime
+							this.active= String(res.data.value1)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			submit(){
+				var data={
+					userId:this.userId,
+					"measurementType": 0, //测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+					"value1": this.active, //数值1(测量值1 测量值只有一个时默认填写/身高cm/舒张压)
+					"measurementDate": this.date, //测量日期 yyyy-MM-dd
+					"measurementTime":this.time//测量时间 HH:mm:ss
+				}
+				if(this.type=="add"){
+					this.addData(data)
+				}
+				else if(this.type=="edit"){
+					data.id=this.id
+					this.updateData(data)
+				}
+			},
+			addData(data){
+				addData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "操作成功",
+							 });
+							 setTimeout(function() {
+								uni.$emit('refreshWaistLineList');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			updateData(data){
+				updateData(data).then(
+					res => {
+						if(res.code==200){
+							 uni.showToast({
+							 	icon:'success',
+							 	title: "更新成功",
+							 });
+							 setTimeout(function() {
+								 uni.$emit('refreshWaistLineList');
+								 uni.navigateBack({
+									 delta: 1
+								 })
+							 }, 500);
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getLatest(){
+				var data={
+					userId:this.userId,
+					measurementType:0
+				}
+				getLatest(data).then(
+					res => {
+						if(res.code==200){
+							if(res.data==null){
+								this.type='add'
+							}else{
+								this.type='edit'
+								this.form = res.data;
+							}
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		
 			// 查询数据
 			getList() {
 				this.loading = true
@@ -139,6 +257,27 @@
 		font-size: 32rpx;
 		color: #333333;
 	}
+	.btn-box {
+		height: 120upx;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	
+		.sub-btn {
+			width: 388rpx;
+			height: 72rpx;
+			line-height: 72upx;
+			text-align: center;
+			font-size: 32upx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FFFFFF;
+			background: #FF5039;
+			border-radius: 44upx;
+			margin-bottom: 40upx;
+		}
+	}
 	.datebox {
 		padding: 0 32rpx;
 		margin-bottom: 20rpx;

+ 85 - 120
pages_echarts/waistLineList.vue

@@ -20,22 +20,23 @@
 			<view class="tab-time">
 				<picker class="birth-picker" mode="date"  fields="month"  @change="bindDateChange">
 					<view class="left-box">
-						<view>{{day}}</view>
+						<view>{{dayName}}</view>
 						<image class="w48 h48" src="../static/images/health/arrow_down.png"></image>
 					</view>
 				</picker>
 			</view>
-			<mescroll-body top="176upx" ref="mescrollRef">
-				<view v-for="(item,index) in dataList" :key="index" class="item">
+			<mescroll-body top="176upx" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption"
+				:up="upOption">
+				<view v-for="(item,index) in dataList" :key="index" class="item" @longpress="cancel(item)">
 					<view class="item-top">
-						{{item.date}}
+						{{item.measurementDate}}
 					</view>
-					<view class="bottom-box" v-for="(it,idx) in item.list" :key="idx" @click="showDetail(it)">
+					<view class="bottom-box"  @click="showDetail(item)">
 						<view class="amount-paid">
-							<view :class="'title bg'+it.type">{{it.typeName}}</view>
-							<view class="data">{{it.data}} CM</view>
+							<view :class="'title bg'+item.level">{{item.level==0?'正常':item.level==1?'偏小':'偏大'}}</view>
+							<view class="data">{{item.value1}} cm</view>
 						</view>
-						<view class="time">{{utils.formatDate(it.createTime)}}</view>
+						<view class="time">{{item.measurementTime}}</view>
 					</view>
 				</view>
 			</mescroll-body>
@@ -44,13 +45,14 @@
 </template>
 
 <script>
-	import {getMyDoctorOrderList,cancelOrder} from '@/api/doctorOrder.js'
+	import {getDataList,getLatest,deleteData} from '@/api/healthUser.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 		mixins: [MescrollMixin], 
 		data() {
 			return {
-				day:this.utils.timeFormat(new Date(),'yyyy年mm月'),
+				day:this.utils.timeFormat(new Date(),'yyyy-mm'),
+				dayName:this.utils.timeFormat(new Date(),'yyyy年mm月'),
 				orderStatus:[
 					{name:"全部",val:""},
 					{name:"正常",val:"0"},
@@ -69,108 +71,68 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'/static/images/no_data.png',
+						icon:'https://user.test.ylrztop.com/images/empty_icon.png',
 						tip: '暂无数据'
 					}
 				},
 				// 列表数据
-				dataList: [
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-06-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'偏小',
-								data:10.9,
-								createTime:'2025-06-25 22:39:55'
-							},
-							{
-								type:3,
-								typeName:'偏大',
-								data:10.9,
-								createTime:'2025-06-25 17:39:55'
-							}
-						],
-						date:'2025-06-25',
-						id:1
-					},
-					{
-					 list:[
-							{
-								type:1,
-								typeName:'正常',
-								data:10.9,
-								createTime:'2025-02-25 12:39:55'
-							},
-							{
-								type:2,
-								typeName:'偏小',
-								data:10.9,
-								createTime:'2025-02-25 20:39:55'
-							}
-						],
-						date:'2025-02-25',
-						id:2
-					}
-				]
+				dataList: []
 			}
 		},
-		onLoad() {
-			// uni.$on('refreshDoctorOrder', () => {
-			// 	this.mescroll.resetUpScroll()
-			// })
+		onLoad(options) {
+			this.userId=options.userId
+			uni.$on('refreshWaistLineList', () => {
+				this.orderStatusValue=''
+				this.mescroll.resetUpScroll()
+				uni.$emit('refreshWaistLine');
+			})
 		},
 		methods: {
 			// 时间选择
 			bindDateChange: function(e) {
-				this.day = this.utils.timeFormat(new Date(e.target.value),'yyyy年mm月')
+				this.day = this.utils.timeFormat(e.target.value,'yyyy-mm')
+				this.dayName=this.utils.timeFormat(e.target.value,'yyyy年mm月')
+				this.mescroll.resetUpScroll()
 			},
 			navgetTo(index){
 				uni.navigateTo({
 					url: index==0?'/pages_health/addServe':'/pages_health/addCompetitors'
 				})
 			},
-			cancel(item){
-				var that=this;
-				uni.showModal({
-				    title: '提示',
-				    content: '确定取消订单吗',
-				    success: function (res) {
-				        if (res.confirm) {
-							var data = {
-								orderId:item.orderId
-							};
-							cancelOrder(data).then(res => {
-								if(res.code==200){
-									uni.showToast({
-										icon:'success',
-										title: '订单已取消',
-									});
-									 that.mescroll.resetUpScroll()
-								}else{
-									uni.showToast({
-										icon:'none',
-										title: res.msg,
-									});
-								}
+	cancel(item){
+		var that=this;
+		uni.showModal({
+		    title: '提示',
+		    content: '确定删除记录吗',
+		    success: function (res) {
+		        if (res.confirm) {
+					var data = {
+						id:item.id
+					};
+					deleteData(data).then(res => {
+						if(res.code==200){
+							uni.showToast({
+								icon:'success',
+								title: '删除成功',
 							});
-				        } 
-						else if (res.cancel) {
-				        }
-				    }
-				});
-			},
+							 that.mescroll.resetUpScroll()
+							 uni.$emit('refreshWaistLine');
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					});
+		        } 
+				else if (res.cancel) {
+		        }
+		    }
+		});
+	},
 			// tab切换
 			orderStatusChange(item) {
 				this.orderStatusValue = item.val
-				if(item.val==1){
-					this.dataList=this.dataList2
-				}
 				this.mescroll.resetUpScroll()
 			},
 			mescrollInit(mescroll) {
@@ -184,36 +146,39 @@
 				//联网加载数据
 				var that = this;
 				var data = {
-					status:this.orderStatusValue,
-					page: page.num,
-					pageSize: page.size
+					"userId": this.userId,
+					"measurementType": 0, 
+					level:this.orderStatusValue,
+					timeSearch:this.day,
+					pageNum:page.num,
+					pageSize:page.size
 				};
-				// getMyDoctorOrderList(data).then(res => {
-				// 	if(res.code==200){
-				// 		//设置列表数据
-				// 		if (page.num == 1) {
-				// 			that.dataList = res.data.list; 
-							
-				// 		} else {
-				// 			that.dataList = that.dataList.concat(res.data.list);
-							 
-				// 		}
-				// 		that.mescroll.endBySize(res.data.list.length, res.data.total);
+			getDataList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
 						
-				// 	}else{
-				// 		uni.showToast({
-				// 			icon:'none',
-				// 			title: "请求失败",
-				// 		});
-				// 		that.dataList = null;
-				// 		that.mescroll.endErr();
-				// 	}
-				// });
+					} else {
+						that.dataList = that.data.List.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
 			},
 			showDetail(item){
-				console.log(item,'pp')
+				// console.log(item,'pp')
 				uni.navigateTo({
-					url: '/pages_echarts/waistLineDetail'
+					url: '/pages_echarts/waistLineDetail?type=edit&id='+item.id+'&userId='+this.userId
 				})
 			}
 		}
@@ -376,13 +341,13 @@
 							margin-right: 18rpx;
 							border-radius:50%;
 						}
-						.bg1{
+						.bg0{
 							background: #52D087;
 						}
-						.bg2{
+						.bg1{
 							background: #FFB992;
 						}
-						.bg3{
+						.bg2{
 							background: #FF5558;
 						}
 						.data{

+ 91 - 6
pages_health/ConsultationDetails.vue

@@ -49,19 +49,20 @@
 			</view>
 			<view class="bg-white p30 radius16 mt30">
 				<view class="bold">上传检测报告或患处照片<text class="color-price">*</text></view>
-				<view class="justify-start align-center mt20" @click="showImg()">
-					<view v-for="(item,index) in imagelist" :key="index" @click="actpeople"
-					class="justify-start align-center ml20">
+				<view class="justify-start align-center mt20">
+					<view v-for="(item,index) in imgList" :key="index"  @tap="viewImage" :data-url="imgList[index]"
+					class="img-box justify-start align-center mr20">
 						<image :src="item" class="w120 h120 radius8 " mode="aspectFill" @click="showImg(item)"></image>
+						<image class="close-img" src="@/static/images/close32.png" mode="" @tap.stop="delImg" :data-index="index"></image>
 					</view>
-					<view class="column align-center bg-light w120 h120 radius8 center" v-if="imagelist.length<=4">
+					<view class="column align-center bg-light w120 h120 radius8 center" @tap="chooseImage" v-if="imgList.length<4" >
 						<u-icon name="plus" ></u-icon>
 						<view class="fs24">上传报告</view>
 					</view>
 				</view>
 				<view class="justify-between fs24 color-text1 mt20">
 					<view>最多上传4张图片</view>
-					<view><text>0</text>/4</view>
+					<view><text>{{imgList.length}}</text>/4</view>
 				</view>
 			</view>
 			<view class="h200"></view>
@@ -122,10 +123,84 @@
 					}
 				],
 				actsee:null,
-				imagelist:[]
+				imgList:[],
+				photos:[]
 			}
 		},
 		methods: {
+			// 选择上传的图片
+			chooseImage() {
+				console.log('图片')
+				var that = this;
+				uni.showActionSheet({
+					itemList: ['相册', '拍照'],
+					success: function(res) {
+						if (res.tapIndex == 0) {
+							//从相册选择
+							that.chooseImageFunction('album')
+						} else if (res.tapIndex == 1) {
+							//拍照
+							that.chooseImageFunction('camera')
+						}
+					},
+					fail: function(res) {
+						
+					}
+				});
+			},
+			chooseImageFunction: function(type) {
+				var that = this;
+				uni.chooseImage({
+					count: 4, // 默认9
+					sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: [type],
+					success: (res) => {
+						uni.uploadFile({
+							url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS', //仅为示例,非真实的接口地址
+							filePath: res.tempFilePaths[0],
+							name: 'file',
+							formData: {
+								'user': 'test'  // 上传附带参数
+							},
+							success: (uploadFileRes) => {
+								// 根据接口具体返回格式   赋值具体对应url
+								if (this.imgList.length != 0) {
+									this.imgList = this.imgList.concat(res.tempFilePaths)
+								} else {
+									this.imgList = res.tempFilePaths
+									
+								}
+						 
+								this.photos = this.photos.concat(JSON.parse(uploadFileRes.data).url)
+							}
+						});
+						 
+					}
+				});
+			},
+			// 查看图片
+			viewImage(e) {
+				uni.previewImage({
+					urls: this.imgList,
+					current: e.currentTarget.dataset.url
+				});
+			},
+			// 删除上传的图片
+			delImg(e) {
+				var that = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定要删除照片吗?',
+					cancelText: '取消',
+					confirmText: '确定',
+					success: res => {
+						if (res.confirm) {
+							that.imgList.splice(e.currentTarget.dataset.index, 1)
+							this.photos.splice(e.currentTarget.dataset.index, 1);
+						}
+					},
+				})
+			},
 			submit(){
 				if(this.userid==null){
 					uni.showToast({
@@ -242,6 +317,16 @@
 		border: 2rpx solid #008FD3;
 	}
 }
+.img-box{
+	position: relative;
+}
+.close-img{
+		width: 32upx;
+		height: 32upx;
+		position: absolute;
+		top:2upx;
+		right: 2upx;
+	}
 .textinput{
 	margin-top: 30rpx;
 	height:200rpx;

+ 34 - 61
pages_health/addCompetitors.vue

@@ -4,27 +4,27 @@
 			<view class="form-box">
 				<view class="form-item">
 					<text class="label">竞品公司</text>
-					<input  class="input-width" type="text" v-model="form.userName" placeholder="请输入竞品公司"
+					<input  class="input-width" type="text" v-model="form.competitorCompany" placeholder="请输入竞品公司"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
 					<text class="label">产品</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入产品"
+					<input class="input-width" type="text" v-model="form.product" placeholder="请输入产品"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
 					<text class="label">价格</text>
-					<input  class="input-width" type="text" v-model="form.userName" placeholder="请输入价格"
+					<input  class="input-width" type="digit" v-model="form.price" placeholder="请输入价格"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
 					<text class="label">服务</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入竞品公司服务方式"
+					<input class="input-width" type="text" v-model="form.service" placeholder="请输入竞品公司服务方式"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
 					<text class="label">免费服务次数</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入服务次数"
+					<input class="input-width" type="number" v-model="form.freeServiceTimes" placeholder="请输入服务次数"
 						placeholder-class="form-input" />
 				</view>
 			</view>
@@ -40,10 +40,8 @@
 
 <script>
 	import {
-		getDocDetails,
-		addDoc,
-		editDoc
-	} from '@/api/doc.js'
+		getCompetitorById,saveCompetitor,updateCompetitor
+	} from '@/api/companyUser.js'
 	export default {
 		data() {
 			return {
@@ -72,34 +70,32 @@
 					id: 4
 				}],
 				form: {
-					userName: null,
-					idCard: null,
-					sex: null,
-					birthday: null,
-					remark: null,
-				}
+					"competitorCompany": null,
+					"freeServiceTimes":null,
+					"price":null,
+					"product": null,
+					"remark": null,
+					"service": null,
+				},
+				id:null
 			};
 		},
-		onLoad(option) {
+		onLoad(options) {
 			this.type = option.type;
+			this.form.userId=options.userId
+			this.form.companyUserId=options.companyUserId;
 			console.log(this.type)
 			if (this.type == 'edit') {
-				this.docId = option.docId;
-				// this.getDocDetails();
+				this.id=option.id;
+				this.getCompetitorInfo();
 			}
 		},
 		methods: {
-			sexChange(type) {
-				this.form.sex = type
-			},
-			radioClick(item) {
-			        this.checked=item.id
-			      },
-			getDocDetails() {
+			getCompetitorInfo() {
 				var data = {
-					docId: this.docId
+					id: this.id
 				};
-				getDocDetails(data).then(
+				getCompetitorById(data).then(
 					res => {
 						if (res.code == 200) {
 							this.form = res.data;
@@ -113,22 +109,6 @@
 					rej => {}
 				);
 			},
-			onChooseAvatar(e){
-				let {
-					avatarUrl
-				} = e.detail;
-				uni.uploadFile({
-					url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS', //仅为示例,非真实的接口地址
-					filePath: avatarUrl,
-					name: 'file',
-					formData: {
-						'user': 'test'  // 上传附带参数
-					},
-					success: (uploadFileRes) => {
-						this.user.avatar =JSON.parse(uploadFileRes.data).url
-					}
-				});
-			},
 			submit() {
 				// if (this.form.userName == null) {
 				// 	uni.showToast({
@@ -158,17 +138,14 @@
 				// 	});
 				// 	return;
 				// }
-				// if (this.type == "add") {
-				// 	this.addDoc()
-				// } else if (this.type == "edit") {
-				// 	this.editDoc()
-				// }
-                uni.navigateTo({
-                	url: '/pages_health/doc?type=edit&docId='
-                })
+				if (this.type == "add") {
+					this.saveCompetitor()
+				} else if (this.type == "edit") {
+					this.updateCompetitor()
+				}
 			},
-			editDoc() {
-				editDoc(this.form).then(
+			updateCompetitor() {
+				updateCompetitor(this.form).then(
 					res => {
 						if (res.code == 200) {
 							uni.showToast({
@@ -176,7 +153,7 @@
 								title: "操作成功",
 							});
 							setTimeout(function() {
-								uni.$emit('refreshDoc');
+								uni.$emit('refreshBuyOrder');
 								uni.navigateBack({
 									delta: 1
 								})
@@ -191,8 +168,8 @@
 					rej => {}
 				);
 			},
-			addDoc() {
-				addDoc(this.form).then(
+			saveCompetitor() {
+				saveCompetitor(this.form).then(
 					res => {
 						if (res.code == 200) {
 							uni.showToast({
@@ -200,7 +177,7 @@
 								title: "操作成功",
 							});
 							setTimeout(function() {
-								uni.$emit('refreshDoc');
+								uni.$emit('refreshBuyOrder');
 								uni.navigateBack({
 									delta: 1
 								})
@@ -215,10 +192,6 @@
 					rej => {}
 				);
 			},
-			// 出生日期选择
-			bindDateChange: function(e) {
-				this.form.birthday = e.target.value
-			},
 		}
 	}
 </script>

+ 309 - 182
pages_health/addDoc.vue

@@ -4,27 +4,27 @@
 			<view class="form-box">
 				<text class="form-title">身体信息</text>
 				<view class="form-item">
-					<text class="label">身高</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入身高"
+					<text class="label">身高<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.height" placeholder="请输入身高"
 						placeholder-class="form-input" />
 					<text class="unit">cm</text>
 				</view>
 				<view class="form-item">
-					<text class="label">体重</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入体重"
+					<text class="label">体重<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.weight" placeholder="请输入体重"
 						placeholder-class="form-input" />
 					<text class="unit">kg</text>
 				</view>
 				<view class="form-item">
-					<text class="label">腰围</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入腰围"
-						placeholder-class="form-input" />
+					<text class="label">腰围<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.waistCircumference"
+						placeholder="请输入腰围" placeholder-class="form-input" />
 					<text class="unit">cm</text>
 				</view>
 				<view class="form-item">
-					<text class="label">臀围</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入臀围"
-						placeholder-class="form-input" />
+					<text class="label">臀围<text class="color-price">*</text></text>
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hipCircumference"
+						placeholder="请输入臀围" placeholder-class="form-input" />
 					<text class="unit">cm</text>
 				</view>
 
@@ -36,17 +36,17 @@
 					<text class="label">高血糖</text>
 					<radio-group style="display: flex;align-items: center;">
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(1)" value="1" :checked="form.sex===1"
+							<radio @click="hyperglycemiaChange(0)" value="0" :checked="form.hyperglycemia==0"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">无</text>
 						</label>
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(2)" value="2" :checked="form.sex===2"
+							<radio @click="hyperglycemiaChange(1)" value="1" :checked="form.hyperglycemia==1"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">轻微</text>
 						</label>
 						<label>
-							<radio @click="sexChange(3)" value="2" :checked="form.sex===2"
+							<radio @click="hyperglycemiaChange(2)" value="2" :checked="form.hyperglycemia==2"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">严重</text>
 						</label>
@@ -54,25 +54,25 @@
 				</view>
 				<view class="form-item">
 					<text class="label">测量值</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入测量值"
-						placeholder-class="form-input" />
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hyperglycemiaValue"
+						placeholder="请输入测量值" placeholder-class="form-input" />
 					<text class="unit">mmol/L</text>
 				</view>
 				<view class="form-item">
 					<text class="label">高血压</text>
 					<radio-group style="display: flex;align-items: center;">
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(1)" value="1" :checked="form.sex===1"
+							<radio @click="hypertensionChange(0)" value="0" :checked="form.hypertension==0"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">无</text>
 						</label>
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(2)" value="2" :checked="form.sex===2"
+							<radio @click="hypertensionChange(1)" value="1" :checked="form.hypertension==1"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">轻微</text>
 						</label>
 						<label>
-							<radio @click="sexChange(3)" value="2" :checked="form.sex===2"
+							<radio @click="hypertensionChange(2)" value="2" :checked="form.hypertension==2"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">严重</text>
 						</label>
@@ -80,31 +80,31 @@
 				</view>
 				<view class="form-item">
 					<text class="label">收缩压</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入测量值"
-						placeholder-class="form-input" />
+					<input maxlength="10" class="input-width" type="digit" v-model="form.systolicPressure"
+						placeholder="请输入测量值" placeholder-class="form-input" />
 					<text class="unit">mmHg</text>
 				</view>
 				<view class="form-item">
 					<text class="label">舒张压</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入测量值"
-						placeholder-class="form-input" />
+					<input maxlength="10" class="input-width" type="digit" v-model="form.diastolicPressure"
+						placeholder="请输入测量值" placeholder-class="form-input" />
 					<text class="unit">mmHg</text>
 				</view>
 				<view class="form-item">
 					<text class="label">高血脂</text>
 					<radio-group style="display: flex;align-items: center;">
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(1)" value="1" :checked="form.sex===1"
+							<radio @click="hyperlipidemiaChange(0)" value="0" :checked="form.hyperlipidemia==0"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">无</text>
 						</label>
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(2)" value="2" :checked="form.sex===2"
+							<radio @click="hyperlipidemiaChange(1)" value="1" :checked="form.hyperlipidemia==1"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">轻微</text>
 						</label>
 						<label>
-							<radio @click="sexChange(3)" value="2" :checked="form.sex===2"
+							<radio @click="hyperlipidemiaChange(2)" value="2" :checked="form.hyperlipidemia==2"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">严重</text>
 						</label>
@@ -114,17 +114,17 @@
 					<text class="label">高尿酸</text>
 					<radio-group style="display: flex;align-items: center;">
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(1)" value="1" :checked="form.sex===1"
+							<radio @click="hyperuricemiaChange(0)" value="0" :checked="form.hyperuricemia==0"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">无</text>
 						</label>
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(2)" value="2" :checked="form.sex===2"
+							<radio @click="hyperuricemiaChange(1)" value="1" :checked="form.hyperuricemia==1"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">轻微</text>
 						</label>
 						<label>
-							<radio @click="sexChange(3)" value="2" :checked="form.sex===2"
+							<radio @click="hyperuricemiaChange(2)" value="2" :checked="form.hyperuricemia==2"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">严重</text>
 						</label>
@@ -132,25 +132,25 @@
 				</view>
 				<view class="form-item">
 					<text class="label">测量值</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入测量值"
-						placeholder-class="form-input" />
+					<input maxlength="10" class="input-width" type="digit" v-model="form.hyperuricemiaValue"
+						placeholder="请输入测量值" placeholder-class="form-input" />
 					<text class="unit">μmol/L</text>
 				</view>
 				<view class="form-item">
 					<text class="label">高体重</text>
 					<radio-group style="display: flex;align-items: center;">
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(1)" value="1" :checked="form.sex===1"
+							<radio @click="bodyWeightStatusChange(0)" value="0" :checked="form.bodyWeightStatus==0"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">正常</text>
 						</label>
 						<label style="margin-right: 50upx;">
-							<radio @click="sexChange(2)" value="2" :checked="form.sex===2"
+							<radio @click="bodyWeightStatusChange(1)" value="1" :checked="form.bodyWeightStatus==1"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">偏瘦</text>
 						</label>
 						<label>
-							<radio @click="sexChange(3)" value="2" :checked="form.sex===2"
+							<radio @click="bodyWeightStatusChange(2)" value="2" :checked="form.bodyWeightStatus==2"
 								style="margin-right: 16upx;" />
 							<text class="sex-text">偏重</text>
 						</label>
@@ -161,35 +161,49 @@
 			<view class="form-box">
 				<text class="form-title">其他病史</text>
 				<view class="form-item wrap">
-					<view class="form-item-tag" v-for="(item, index) in tags" :key="index" @click="radioClick(item)">
-					<view :class="checked==item.id?'tag active':'tag'">
-						{{item.name}}
-					</view>
+					<view class="form-item-tag mb16" v-for="(item, index) in tags" :key="index"
+						@click="tagsClick(item)">
+						<view :class="checkedItems.includes(item.dictValue)?'tag active':'tag'">
+							{{item.dictLabel}}
+						</view>
 					</view>
-					<view class="form-item-tag mt16">
-						<view class="tag">
+					<!-- 其他选项 -->
+					<view class="form-item-tag" @click="toggleOther">
+						<view :class="otherSelected ? 'tag active' : 'tag'">
 							+ 其他
 						</view>
-						
 					</view>
 				</view>
+				<view class="form-item" v-if="otherSelected">
+					<text class="label">其他病史</text>
+					<input class="input-width" type="text" v-model="symptom" placeholder="请输入病史"
+						placeholder-class="form-input" />
+				</view>
 			</view>
 			<view class="form-box">
 				<text class="form-title">症状史</text>
 				<view class="form-item wrap">
-					<view class="form-item-tag" v-for="(item, index) in tags" :key="index" @click="radioClick(item)">
-						<view :class="checked==item.id?'tag active':'tag'">
-							{{item.name}}
+					<view class="form-item-tag mb16" v-for="(item, index) in cates" :key="index"
+						@click="catesClick(item)">
+						<view :class="checkedItems2.includes(item.dictValue)?'tag active':'tag'">
+							{{item.dictLabel}}
 						</view>
 					</view>
-					<view class="form-item-tag mt16">
-						<view class="tag">
+					<!-- 其他选项 -->
+					<view class="form-item-tag" @click="toggleOther2">
+						<view :class="otherSelected2 ? 'tag active' : 'tag'">
 							+ 其他
 						</view>
-						
 					</view>
 				</view>
+<!-- 其他症状输入框(选中"其他"时显示) -->
+			<view class="form-item" v-if="otherSelected2">
+				<text class="label">其他症状</text>
+				<input class="input-width" type="text" v-model="symptom2" placeholder="请输入症状"
+					placeholder-class="form-input" />
 			</view>
+			</view>
+			
 		</view>
 		<view class="btn-box">
 			<view class="sub-btn" @click="submit()">保存</view>
@@ -199,168 +213,279 @@
 
 <script>
 	import {
-		getDocDetails,
+		getDoc,
 		addDoc,
-		editDoc
-	} from '@/api/doc.js'
+		updateDoc
+	} from '@/api/healthUser.js'
+	import {
+		getDictByKey
+	} from '@/api/common.js'
 	export default {
 		data() {
 			return {
 				type: null,
 				patientId: null,
-				famaleurl:"/static/images/health/female_profile.png",
-				maleurl:"/static/images/health/my_heads.png",
-				checked:1,
-				tags: [{
-					name: '心脏病',
-					checked:true,
-					id: 1
-				},
-				{
-					name: '脑梗死',
-						checked:false,
-					id: 2
-				},{
-					name: '肾病',
-						checked:false,
-					id: 3
-				},{
-					name: '脂肪肝',
-						checked:false,
-					id: 4
-				}],
+				symptom: null,
+				symptom2: null,
+				famaleurl: "/static/images/health/female_profile.png",
+				maleurl: "/static/images/health/my_heads.png",
+				// 存储所有选中的症状值
+				checkedItems: [],
+				checkedItems2: [],
+				text: [],
+				text2: [],
+				// 其他选项是否选中
+				otherSelected: false,
+				otherSelected2: false,
+				// 其他症状输入内容
+				tags: [
+					// 	{
+					// 	name: '心脏病',
+					// 	checked:true,
+					// 	id: 1
+					// },
+					// {
+					// 	name: '脑梗死',
+					// 		checked:false,
+					// 	id: 2
+					// },{
+					// 	name: '肾病',
+					// 		checked:false,
+					// 	id: 3
+					// },{
+					// 	name: '脂肪肝',
+					// 		checked:false,
+					// 	id: 4
+					// },
+				],
+				cates: [],
 				form: {
-					userName: null,
-					idCard: null,
-					sex: null,
-					birthday: null,
-					remark: null,
+					"height": null,
+					"weight": null,
+					"waistCircumference": null,
+					"hipCircumference": null,
+					"hyperglycemia": 0,
+					"hyperglycemiaValue": null,
+					"hypertension": 0,
+					"systolicPressure": null,
+					"diastolicPressure": null,
+					"hyperlipidemia": 0,
+					"hyperuricemia": 0,
+					"hyperuricemiaValue": null,
+					"bodyWeightStatus": 0,
+					"otherMedicalHistory": null,
+					"symptomHistory": null,
 				}
+
 			};
 		},
-		onLoad(option) {
-			this.type = option.type;
-			console.log(this.type)
-			if (this.type == 'edit') {
-				this.docId = option.docId;
-				// this.getDocDetails();
-			}
+		onLoad(options) {
+			
+			this.companyUserId = options.companyUserId;
+			this.form.userId =options.userId;
+			this.form.companyUserId = options.companyUserId;
+			// console.log(this.type)
+			// if (this.type == 'edit') {
+				
+			// }
+			this.getDoc();
+			this.getDictByKey('other_medical_history')
+			this.getDictByKey('medical_history')
 		},
 		methods: {
 			sexChange(type) {
 				this.form.sex = type
 			},
-			radioClick(item) {
-			        this.checked=item.id
-			      },
-			getDocDetails() {
-				var data = {
-					docId: this.docId
-				};
-				getDocDetails(data).then(
-					res => {
-						if (res.code == 200) {
-							this.form = res.data;
-
-						} else {
-							uni.showToast({
-								title: res.msg,
-							});
-						}
-					},
-					rej => {}
-				);
+			//血糖
+			hyperglycemiaChange(e) {
+				this.form.hyperglycemia = e
 			},
-			submit() {
-				if (this.form.userName == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "姓名不能为空",
-					});
-					return;
-				}
-				if (this.form.idCard == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "身份证号不能为空",
-					});
-					return;
-				}
-				if (this.form.sex == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "性别不能为空",
-					});
-					return;
+			//血压
+			hypertensionChange(e) {
+				this.form.hypertension = e
+			},
+			//血脂
+			hyperlipidemiaChange(e) {
+				this.form.hyperlipidemia = e
+			},
+			//尿酸
+			hyperuricemiaChange(e) {
+				this.form.hyperuricemia = e
+			},
+			bodyWeightStatusChange(e) {
+				this.form.bodyWeightStatus = e
+			},
+			tagsClick(item) {
+				const index = this.checkedItems.indexOf(item.dictValue);
+				if (index > -1) {
+					// 如果已选中则移除
+					this.checkedItems.splice(index, 1);
+				} else {
+					// 如果未选中则添加
+					this.checkedItems.push(item.dictValue);
+					this.text.push(item.dictLabel)
 				}
-				if (this.form.birthday == null) {
-					uni.showToast({
-						icon: 'none',
-						title: "出生年月不能为空",
-					});
-					return;
+			},
+			catesClick(item) {
+				const index = this.checkedItems2.indexOf(item.dictValue);
+				if (index > -1) {
+					// 如果已选中则移除
+					this.checkedItems2.splice(index, 1);
+				} else {
+					// 如果未选中则添加
+					this.checkedItems2.push(item.dictValue);
+					this.text2.push(item.dictLabel)
 				}
-				if (this.type == "add") {
-					this.addDoc()
-				} else if (this.type == "edit") {
-					this.editDoc()
+			},
+			// 切换其他选项
+			toggleOther() {
+				this.otherSelected = !this.otherSelected;
+				// 清空其他症状输入
+				if (!this.otherSelected) {
+					this.symptom = null;
 				}
+				},
+				toggleOther2() {
+						this.otherSelected2 = !this.otherSelected2;
+						// 清空其他症状输入
+						if (!this.otherSelected2) {
+							this.symptom2 = null;
+						}
+					},
+					getDictByKey(key) {
+						var data = {
+							key: key
+						}
+						getDictByKey(data).then(
+							res => {
+								if (res.code == 200) {
+									if (key == "other_medical_history") {
+										this.tags = res.data;
+									}
+									if (key == "medical_history") {
+										this.cates = res.data;
+									}
+								}
+							},
+							err => {}
+						);
 
-			},
-			editDoc() {
-				editDoc(this.form).then(
-					res => {
-						if (res.code == 200) {
+					},
+					getDoc() {
+						var data = {
+							userId: this.form.userId
+						};
+						getDoc(data).then(
+							res => {
+								if (res.code == 200) {
+									if(res.data==null){
+										this.type='add'
+									}else{
+										this.type='edit'
+										this.form = res.data;
+									}
+								} else {
+									uni.showToast({
+										title: res.msg,
+									});
+								}
+							},
+							rej => {}
+						);
+					},
+					submit() {
+						if (this.form.height == null) {
 							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
+								icon: 'none',
+								title: "身高不能为空",
 							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
-						} else {
+							return;
+						}
+						if (this.form.weight == null) {
 							uni.showToast({
 								icon: 'none',
-								title: res.msg,
+								title: "体重不能为空",
 							});
+							return;
 						}
-					},
-					rej => {}
-				);
-			},
-			addDoc() {
-				addDoc(this.form).then(
-					res => {
-						if (res.code == 200) {
+						if (this.form.waistCircumference == null) {
 							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
+								icon: 'none',
+								title: "腰围不能为空",
 							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
-						} else {
+							return;
+						}
+						if (this.form.hipCircumference == null) {
 							uni.showToast({
 								icon: 'none',
-								title: res.msg,
+								title: "臀围不能为空",
 							});
+							return;
+						}
+						// console.log(this.text,'---')
+			this.form.otherMedicalHistory = this.utils.joinWithSymptom(this.text, this.symptom)
+			this.form.symptomHistory = this.utils.joinWithSymptom(this.text2, this.symptom2)
+						if (this.type == "add") {
+							this.addDoc()
+						} else if (this.type == "edit") {
+							this.editDoc()
 						}
+
 					},
-					rej => {}
-				);
-			},
-			// 出生日期选择
-			bindDateChange: function(e) {
-				this.form.birthday = e.target.value
-			},
+					editDoc() {
+						updateDoc(this.form).then(
+							res => {
+								if (res.code == 200) {
+									uni.showToast({
+										icon: 'success',
+										title: "操作成功",
+									});
+									setTimeout(function() {
+										uni.$emit('refreshHealthFiles');
+										uni.navigateBack({
+											delta: 1
+										})
+									}, 500);
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg,
+									});
+								}
+							},
+							rej => {}
+						);
+					},
+					addDoc() {
+						addDoc(this.form).then(
+							res => {
+								if (res.code == 200) {
+									uni.showToast({
+										icon: 'success',
+										title: "操作成功",
+									});
+									setTimeout(function() {
+										uni.$emit('refreshHealthFiles');
+										uni.navigateBack({
+											delta: 1
+										})
+									}, 500);
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg,
+									});
+								}
+							},
+							rej => {}
+						);
+					},
+					// 出生日期选择
+					bindDateChange: function(e) {
+						this.form.birthdate = e.target.value
+					},
+			}
 		}
-	}
 </script>
 
 <style lang="scss">
@@ -403,7 +528,7 @@
 					&:last-child {
 						border-bottom: none;
 					}
-        
+
 					.label {
 						width: 150upx;
 						text-align: left;
@@ -429,7 +554,7 @@
 						color: #222222;
 						flex-shrink: 0;
 					}
-               
+
 					.form-input {
 						font-size: 30upx;
 						font-family: PingFang SC;
@@ -438,9 +563,10 @@
 						text-align: left;
 					}
 
-					.form-item-tag{
+					.form-item-tag {
 						margin-right: 16rpx;
-						.tag{
+
+						.tag {
 							border-radius: 8rpx 8rpx 8rpx 8rpx;
 							border: 2rpx solid #ECECEC;
 							display: flex;
@@ -449,15 +575,16 @@
 							font-family: PingFang SC;
 							font-weight: 400;
 							font-size: 24rpx;
-							&.active{
+
+							&.active {
 								background: #F0FAFF;
 								border: 2rpx solid #008FD3;
 								color: #008FD3;
 							}
 						}
-						
-						
-						
+
+
+
 					}
 				}
 			}

+ 303 - 180
pages_health/addUser.vue

@@ -6,57 +6,62 @@
 				<view class="form-item justify-between">
 					<text class="label">头像</text>
 					<view class="right">
-						<image :src="maleurl" class="w90 h90"></image>
+						<image :src="form.avatar==null?maleurl:form.avatar" class="w90 h90"></image>
 						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
-						<!-- <button class="wx-head" type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
-						</button> -->
+						<button class="wx-head" type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
+						</button>
 					</view>
 				</view>
 				<view class="form-item">
-					<text class="label">性别</text>
+					<text class="label">姓名<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.username" placeholder="请输入姓名"
+						placeholder-class="form-input" />
+				</view>
+				<view class="form-item">
+					<text class="label">性别<text class="color-price">*</text></text>
 					<view class="sex-box">
-						<view :class="form.sex===1?'sex-item active':'sex-item'"  @click="sexChange(1)" >
-							<u-icon name="man" :color="form.sex===1?'#FF5030':'#898E91'" size="20"></u-icon>
+						<view :class="form.sex==0?'sex-item active':'sex-item'"  @click="sexChange(0)" >
+							<u-icon name="man" :color="form.sex==0?'#008FD3':'#EBF8FF'" size="20"></u-icon>
 							<text>男</text>
 						</view>
-						<view :class="form.sex===2?'sex-item active':'sex-item'"  @click="sexChange(2)" >
-							<u-icon name="woman" :color="form.sex===2?'#FF5030':'#898E91'" size="20"></u-icon>
+						<view :class="form.sex==1?'sex-item active2':'sex-item'"  @click="sexChange(1)" >
+							<u-icon name="woman" :color="form.sex==1?'#FF5030':'#898E91'" size="20"></u-icon>
 							<text>女</text>
 						</view>
 					</view>
 				</view>
 				<view class="form-item">
-					<text class="label">出生年月</text>
+					<text class="label">出生年月<text class="color-price">*</text></text>
 					<picker class="birth-picker" mode="date"   @change="bindDateChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择出生年月" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.birthdate" placeholder="请选择出生年月" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
 					</picker>
 				</view>
 				<view class="form-item">
-					<text class="label">手机号</text>
-					<input maxlength="11" class="input-width" type="idcard" v-model="form.idCard" placeholder="请输入手机号" placeholder-class="form-input" />
+					<text class="label">手机号<text class="color-price">*</text></text>
+					<input maxlength="11" class="input-width" type="number" v-model="form.phone" placeholder="请输入手机号" placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">身份证号</text>
+					<text class="label">身份证号<text class="color-price">*</text></text>
 					<input maxlength="18" class="input-width" type="idcard" v-model="form.idCard" placeholder="请如实填写身份证号" placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">退休前工作单位</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入工作单位"
+					<text class="label">退休前工作单位<text class="color-price">*</text></text>
+					<input class="input-width" type="text" v-model="form.previousEmployer" placeholder="请输入工作单位"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">可支配收入</text>
-					<input  class="input-width" type="text" v-model="form.userName" placeholder="请输入支配收入"
+					<text class="label">可支配收入<text class="color-price">*</text></text>
+					<input  class="input-width" type="digit" v-model="form.disposableIncome" placeholder="请输入支配收入"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
-					<text class="label">实际消费</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入实际消费"
+					<text class="label">实际消费<text class="color-price">*</text></text>
+					<input class="input-width" type="digit" v-model="form.actualConsumption" placeholder="请输入实际消费"
 						placeholder-class="form-input" />
 				</view>
 			</view>
@@ -64,11 +69,11 @@
 				<text class="form-title">家庭地址及居住情况</text>
 				
 				<view class="form-item">
-					<text class="label">市区</text>
-					<picker class="birth-picker" mode="region"   @change="bindDateChange">
+					<text class="label">市区<text class="color-price">*</text></text>
+					<picker class="birth-picker" mode="region" level="city"  @change="bindCityChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择市区" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.city" placeholder="请选择市区" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
@@ -77,13 +82,13 @@
 				</view>
 				<view class="form-item">
 					<text class="label">小区名称</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入小区名称"
+					<input maxlength="10" class="input-width" type="text" v-model="form.residentialCommunity" placeholder="请输入小区名称"
 						placeholder-class="form-input" />
 				
 				</view>
 				<view class="form-item">
 					<text class="label">门牌</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入门牌号"
+					<input maxlength="10" class="input-width" type="text" v-model="form.houseNumber" placeholder="请输入门牌号"
 						placeholder-class="form-input" />
 				
 				</view>
@@ -91,13 +96,13 @@
 				
 				<view class="form-item">
 					<text class="label">面积</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入面积"
+					<input maxlength="10" class="input-width" type="text" v-model="form.area" placeholder="请输入面积"
 						placeholder-class="form-input" />
 				</view>
 				
                  <view class="form-item">
 					<text class="label">楼层</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入楼层"
+					<input maxlength="10" class="input-width" type="text" v-model="form.floor" placeholder="请输入楼层"
 						placeholder-class="form-input" />
 				</view>
 			</view>
@@ -105,13 +110,13 @@
 				<text class="form-title">家庭情况</text>
 				<view class="form-item">
 					<text class="label">伴侣</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入伴侣姓名"
+					<input class="input-width" type="text" v-model="form.partnerName" placeholder="请输入伴侣姓名"
 						placeholder-class="form-input" />
 				
 				</view>
 				<view class="form-item">
 					<text class="label">伴侣年龄</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入伴侣年龄"
+					<input class="input-width" type="number" v-model="form.partnerAge" placeholder="请输入伴侣年龄"
 						placeholder-class="form-input" />
 				
 				</view>
@@ -119,36 +124,39 @@
 				
 				<view class="form-item">
 					<text class="label">子辈单位</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入子辈工作单位"
+					<input maxlength="10" class="input-width" type="text" v-model="form.partnerEmployer" placeholder="请输入子辈工作单位"
 						placeholder-class="form-input" />
 				</view>
 				
 				 <view class="form-item">
 					<text class="label">孙辈学校</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入所在学校"
+					<input maxlength="10" class="input-width" type="text" v-model="form.grandchildrenSchool" placeholder="请输入所在学校"
 						placeholder-class="form-input" />
 				</view>
 			</view>
 			<view class="form-box">
 				<text class="form-title">会员情况</text>
-				<view class="form-item">
+				<view class="form-item justify-between">
 					<text class="label">是否是会员</text>
-				<picker class="birth-picker" mode="selector"  @change="bindDateChange" :range="array">
-					<view class="right-box">
-						<view class="input-box">
-							<input type="text" :value="form.birthday" placeholder="请选择是否是会员" placeholder-class="form-input" disabled="disabled" />
-						</view>
-						<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
-					</view>
-				</picker>
-				
+				<radio-group style="display: flex;align-items: center;">
+					<label style="margin-right: 50upx;">
+						<radio @click="radioClick(1)" value="1" :checked="form.isMember==1"
+							style="margin-right: 16upx;" />
+						<text class="sex-text">是</text>
+					</label>
+					<label>
+						<radio @click="radioClick(0)" value="0" :checked="form.isMember==0"
+							style="margin-right: 16upx;" />
+						<text class="sex-text">否</text>
+					</label>
+				</radio-group>
 				</view>
 				<view class="form-item">
 					<text class="label">会员分类</text>
-					<picker class="birth-picker" mode="date"   @change="bindDateChange">
+					<picker class="birth-picker" mode="selector"  @change="bindMemberChange($event,tags)" :range="tags" range-key="dictLabel">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择会员分类" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.memberLevel" placeholder="请选择会员分类" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
@@ -159,10 +167,10 @@
 				
 				<view class="form-item">
 					<text class="label">加入时间</text>
-					<picker class="birth-picker" mode="date"   @change="bindDateChange">
+					<picker class="birth-picker" mode="date"   @change="bindJoinChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择加入时间" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.joinTime" placeholder="请选择加入时间" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
@@ -171,10 +179,10 @@
 				
 				 <view class="form-item">
 					<text class="label">到期时间</text>
-					<picker class="birth-picker" mode="date"   @change="bindDateChange">
+					<picker class="birth-picker" mode="date"   @change="bindEndChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择到期时间" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.expiryTime" placeholder="请选择到期时间" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
@@ -182,10 +190,10 @@
 				</view>
 				<view class="form-item">
 					<text class="label">管理月份</text>
-					<picker class="birth-picker" mode="date" fields="month" @change="bindDateChange">
+					<picker class="birth-picker" mode="date" fields="month" @change="bindMonthChange">
 						<view class="right-box">
 							<view class="input-box">
-								<input type="text" :value="form.birthday" placeholder="请选择管理月份" placeholder-class="form-input" disabled="disabled" />
+								<input type="text" :value="form.managementMonth" placeholder="请选择管理月份" placeholder-class="form-input" disabled="disabled" />
 							</view>
 							<image class="w48 h48" src="/static/images/health/right_arrow_right_icon24.png"></image>
 						</view>
@@ -196,13 +204,13 @@
 				<text class="form-title">特殊情况</text>
 				<view class="form-item">
 					<text class="label">职位</text>
-					<input class="input-width" type="text" v-model="form.userName" placeholder="请输入职位"
+					<input class="input-width" type="text" v-model="form.position" placeholder="请输入职位"
 						placeholder-class="form-input" />
 				
 				</view>
 				<view class="form-item">
 					<text class="label">癖好</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入癖好"
+					<input maxlength="10" class="input-width" type="text" v-model="form.hobbies" placeholder="请输入癖好"
 						placeholder-class="form-input" />
 				
 				</view>
@@ -210,30 +218,30 @@
 				
 				<view class="form-item">
 					<text class="label">平日喜好</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入平日喜好"
+					<input maxlength="10" class="input-width" type="text" v-model="form.specialties" placeholder="请输入平日喜好"
 						placeholder-class="form-input" />
 				</view>
 				
 				 <view class="form-item">
 					<text class="label">信仰</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入信仰"
+					<input maxlength="10" class="input-width" type="text" v-model="form.faith" placeholder="请输入信仰"
 						placeholder-class="form-input" />
 				</view>
 				<view class="form-item">
 					<text class="label">担忧</text>
-					<input maxlength="10" class="input-width" type="text" v-model="form.userName" placeholder="请输入信仰"
+					<input maxlength="10" class="input-width" type="text" v-model="form.concerns" placeholder="请输入担忧"
 						placeholder-class="form-input" />
 				</view>
 			</view>
 			<view class="form-box">
-				<text class="form-title">其他</text>
+				<text class="form-title">其他<text class="color-price">*</text></text>
 				<view class="form-item">
 				<!-- 	<text class="label">备注</text> -->
-					<textarea maxlength="200" class="form-textarea" v-model="form.remark" placeholder="请输入用户想解决的问题"   />
+					<textarea maxlength="200" class="form-textarea" v-model="form.problemsToSolve" placeholder="请输入用户想解决的问题"  placeholder-class="textarea-input" />
 				</view>
 				<view class="form-item">
 					<!-- <text class="label">备注</text> -->
-					<textarea maxlength="200" class="form-textarea" v-model="form.remark" placeholder="请输入健康管理师对用户的建议"   />
+					<textarea maxlength="200" class="form-textarea" v-model="form.healthSuggestions" placeholder="请输入健康管理师对用户的建议"   placeholder-class="textarea-input"/>
 				</view>
 			</view>
 		
@@ -245,6 +253,7 @@
 </template>
 
 <script>
+	import {getInfo,updateInfo,deleteInfo,addInfo,getMember} from '@/api/healthUser.js'
 	import {
 		getDocDetails,
 		addDoc,
@@ -258,58 +267,73 @@
 				famaleurl:"/static/images/health/female_profile.png",
 				maleurl:"/static/images/health/my_heads.png",
 				checked:1,
-				array:['是','否'],
-				tags: [{
-					name: '心脏病',
-					checked:true,
-					id: 1
-				},
-				{
-					name: '脑梗死',
-						checked:false,
-					id: 2
-				},{
-					name: '肾病',
-						checked:false,
-					id: 3
-				},{
-					name: '脂肪肝',
-						checked:false,
-					id: 4
-				}],
+				// 定义直辖市列表,用于判断特殊处理
+				      municipalities: ['北京市', '上海市', '天津市', '重庆市'],
+				array:[
+					{id:1,name:'是'},
+					{id:0,name:'否'},
+					],
+				tags: [],
+				isAdd:null,
 				form: {
-					userName: null,
-					idCard: null,
-					sex: null,
-					birthday: null,
-					remark: null,
+					"username": null,
+					avatar:null,
+					"sex":0, 
+					"birthdate": null, 
+					"age": 0,
+					"phone":  null,
+					"idCard":  null,
+					"previousEmployer":  null,
+					"disposableIncome": null,
+					"actualConsumption":  null,
+					"city":  null,
+					"residentialCommunity": null,
+					"houseNumber": null, 
+					"area":  null, 
+					"floor":  null,
+					"partnerName":  null,
+					"partnerAge":  null,
+					"partnerEmployer":  null,
+					"grandchildrenSchool": null,
+					"isMember":  1, 
+					"memberLevel":  null, 
+					"joinTime": null,
+					"expiryTime": null,
+					"managementMonth":null,
+					"position":null,
+					"hobbies": null,
+					"specialties": null,
+					"faith": null, 
+					"concerns": null,
+					"problemsToSolve": null,
+					"healthSuggestions": null,
 				}
 			};
 		},
-		onLoad(option) {
-			this.type = option.type;
-			console.log(this.type)
+		onLoad(options) {
+			this.type = options.type;
+			this.userId=options.userId;
+			this.companyUserId=options.companyUserId;
+			this.form.userId=options.userId;
+			this.form.companyUserId=options.companyUserId;
 			if (this.type == 'edit') {
-				this.docId = option.docId;
-				// this.getDocDetails();
+				this.getInfo();
 			}
+			this.getMember()
 		},
 		methods: {
 			sexChange(type) {
 				this.form.sex = type
 			},
-			radioClick(item) {
-			        this.checked=item.id
+			radioClick(id) {
+			        this.form.isMember=id
 			      },
-			getDocDetails() {
-				var data = {
-					docId: this.docId
-				};
-				getDocDetails(data).then(
+			getMember(){
+				getMember().then(
 					res => {
 						if (res.code == 200) {
-							this.form = res.data;
-
+							this.tags= res.data;
+						    
 						} else {
 							uni.showToast({
 								title: res.msg,
@@ -319,7 +343,29 @@
 					rej => {}
 				);
 			},
+		getInfo() {
+			var data = {
+				userId: this.userId
+			};
+			getInfo(data).then(
+				res => {
+					if (res.code == 200) {
+		                this.form = res.data;
+					} else {
+						uni.showToast({
+							title: res.msg,
+						});
+					}
+				},
+				rej => {}
+			);
+		},
 			onChooseAvatar(e){
+				// 处理用户取消的情况
+				    if (e.detail.errMsg && e.detail.errMsg.includes('cancel')) {
+				      console.log('选择头像已取消')
+				      return
+				    }
 				let {
 					avatarUrl
 				} = e.detail;
@@ -331,100 +377,159 @@
 						'user': 'test'  // 上传附带参数
 					},
 					success: (uploadFileRes) => {
-						this.user.avatar =JSON.parse(uploadFileRes.data).url
+						this.form.avatar =JSON.parse(uploadFileRes.data).url
 					}
 				});
 			},
 			submit() {
-				// if (this.form.userName == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "姓名不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.idCard == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "身份证号不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.sex == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "性别不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.form.birthday == null) {
-				// 	uni.showToast({
-				// 		icon: 'none',
-				// 		title: "出生年月不能为空",
-				// 	});
-				// 	return;
-				// }
-				// if (this.type == "add") {
-				// 	this.addDoc()
-				// } else if (this.type == "edit") {
-				// 	this.editDoc()
-				// }
-                uni.navigateTo({
-                	url: '/pages_health/doc?type=edit&docId='
-                })
+				if (this.form.username == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "姓名不能为空",
+					});
+					return;
+				}
+				if (this.form.phone == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "手机号不能为空",
+					});
+					return;
+				}
+				if (this.form.idCard == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "身份证号不能为空",
+					});
+					return;
+				}
+				if (this.form.sex == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "性别不能为空",
+					});
+					return;
+				}
+				if (this.form.birthdate == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "出生年月不能为空",
+					});
+					return;
+				}
+				if (this.form.city == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "市区不能为空",
+					});
+					return;
+				}
+				if (this.form.problemsToSolve == null) {
+					uni.showToast({
+						icon: 'none',
+						title: "用户问题不能为空",
+					});
+					return;
+				}
+				if(this.type=="add"){
+					this.addDoc()
+				}
+				else if(this.type=="edit"){
+					this.editDoc()
+				}
+                // uni.navigateTo({
+                // 	url: '/pages_health/doc?type=edit&docId='
+                // })
 			},
-			editDoc() {
-				editDoc(this.form).then(
-					res => {
-						if (res.code == 200) {
-							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
-							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
-						} else {
-							uni.showToast({
-								icon: 'none',
-								title: res.msg,
-							});
-						}
-					},
-					rej => {}
-				);
+	editDoc() {
+		updateInfo(this.form).then(
+			res => {
+				if (res.code == 200) {
+					uni.showToast({
+						icon: 'success',
+						title: "操作成功",
+					});
+					setTimeout(function() {
+						uni.$emit('refreshDoc');
+						uni.navigateBack({
+							delta: 1
+						})
+					}, 500);
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.msg,
+					});
+				}
 			},
-			addDoc() {
-				addDoc(this.form).then(
-					res => {
-						if (res.code == 200) {
-							uni.showToast({
-								icon: 'success',
-								title: "操作成功",
-							});
-							setTimeout(function() {
-								uni.$emit('refreshDoc');
-								uni.navigateBack({
-									delta: 1
-								})
-							}, 500);
-						} else {
-							uni.showToast({
-								icon: 'none',
-								title: res.msg,
-							});
-						}
-					},
-					rej => {}
-				);
+			rej => {}
+		);
+	},
+	addDoc() {
+		addInfo(this.form).then(
+			res => {
+				if (res.code == 200) {
+					uni.showToast({
+						icon: 'success',
+						title: "操作成功",
+					});
+					setTimeout(function() {
+						uni.$emit('refreshDoc');
+						uni.navigateBack({
+							delta: 1
+						})
+					}, 500);
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.msg,
+					});
+				}
 			},
+			rej => {}
+		);
+	},
 			// 出生日期选择
 			bindDateChange: function(e) {
-				this.form.birthday = e.target.value
+				this.form.birthdate = e.target.value
 			},
+			//市区
+			bindCityChange:function(e) {
+				const region = e.detail.value; // 格式: [省, 市, 区]
+				      let displayText = '';
+				      // 处理直辖市重复问题
+				      if (this.municipalities.includes(region[0])) {
+				        // 直辖市:省和市名称相同,只显示一次
+				        // 格式变为 "北京市 海淀区" 而非 "北京市 北京市 海淀区"
+				        displayText = `${region[0]}`;
+				      } else {
+				        // 非直辖市:正常显示省市区
+				        displayText = region;
+				      }
+				      this.form.city = displayText;
+				
+				},
+				//会员情况
+				// bindIsMemberChange:function(e) {
+				// 	this.form.isMember = e
+				// 	},
+				//会员分类
+				bindMemberChange:function(e,list) {
+					var index=e.target.value
+					this.form.memberLevel = list[e.target.value].dictLabel
+					},
+					//加入时间
+					bindJoinChange:function(e) {
+						this.form.joinTime = e.target.value
+						},
+						//到期时间
+						bindEndChange:function(e) {
+							this.form.expiryTime = e.target.value
+							},
+							//月份
+							bindMonthChange:function(e) {
+								this.form.managementMonth = e.target.value
+								},
 		}
 	}
 </script>
@@ -517,6 +622,16 @@
 					.right{
 						display: flex;
 						align-items: center;
+						position: relative;
+						image{
+							border-radius: 50%;
+						}
+						.wx-head{
+							position: absolute;
+							width: 140upx;
+							height: 80upx;
+							opacity: 0;
+						}
 					}
 					.sex-box{
 						flex:1;
@@ -543,6 +658,12 @@
 								margin-left: 12rpx;
 							}
 							&.active{
+								background: #EBF8FF;
+								text{
+									color:#008FD3
+								}
+							}
+							&.active2{
 								background: #FCF0E7;
 								text{
 									color:#FF5030
@@ -552,11 +673,13 @@
 					}
 					.form-textarea{
 						font-size: 30upx;
-						color: #999999;
+						// color: #999999;
 						height: 100upx;
 						padding: 4upx 0;
 					}
-					 
+					 .textarea-input{
+						 color: #999999;
+					 }
 					.birth-picker {
 						flex: 1;
 						display: flex;

+ 0 - 320
pages_health/doc.vue

@@ -1,320 +0,0 @@
-<template>
-	<view class="content">
-		<view class="inner">
-			<view v-for="(item,index) in docs" :key="index" class="item" @click="showDetail(item)">
-				<view class="user-info">
-					<view class="user-top">
-						<view class="user-left">
-							<image :src="maleurl" class="w112 h112"></image>
-							<view class="ml32">
-								<view class="name">{{item.userName}}</view>
-								<view class="age-box"  :style="{'background-color':item.sex==1?'#EBF8FF':'#FCF0E7'}">
-									<u-icon :color="item.sex==1?'#008FD3':'#FF5030'" :name="item.sex==1?'man':'woman'"></u-icon>
-									<view class="age">{{utils.getAge(item.birthday)}}岁</view>
-								</view>
-							</view>
-							
-						</view>
-						<view class="user-phone">{{utils.parsePhone(item.phone)}}</view>
-					</view>
-					<view class="user-bottom">
-						<view class="btn" @click="navgetTo('/pages_health/buyOrder?type=add')">购买信息</view>
-						<view class="btn" @click="navgetTo('/pages_health/addUser?type=add')">基本信息</view>
-						<view class="btn" @click="navgetTo('/pages_health/addDoc?type=add')">健康档案</view>
-					</view>
-				</view>
-			</view>
-			<view v-if="docs.length == 0" class="no-data-box" @click="getMyDocList()">
-				<image src="../../static/images/no_data.png" mode="aspectFit"></image>
-				<view class="empty-title">暂无数据</view>
-			</view>
-		</view>
-		<view class="btn-box">
-			<view class="sub-btn" @click="addDoc">
-				<image src="/static/images/health/nav_add_icon24.png" class="w48 h48"></image>
-				<text>创建用户信息</text>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {getMyDocList,delDoc} from '@/api/doc.js'
-	export default {
-		data() {
-			return {
-				famaleurl:"/static/images/health/female_profile.png",
-				maleurl:"/static/images/health/my_heads.png",
-				docs:[
-					{userName:'西航宇',sex:1,birthday:'1990-01-01',phone:'16666666666'},
-					{userName:'蓝西',sex:2,birthday:'1990-06-01',phone:'1888888888'},
-					{userName:'西航宇',sex:1,birthday:'1993-01-01',phone:'16666666666'},
-					{userName:'蓝西',sex:2,birthday:'1994-06-01',phone:'1888888888'},
-					{userName:'蓝西',sex:2,birthday:'1994-06-01',phone:'1888888888'}
-				],
-			}
-		},
-		onLoad() {
-			// this.getMyDocList()
-			// uni.$on('refreshDoc', () => {
-			// 	this.getMyDocList()
-			// })
-		},
-		methods: {
-			navgetTo(url){
-				uni.navigateTo({
-					url: url
-				})
-			},
-			showDetail(item){
-				uni.navigateTo({
-					url: './docDetail?docId='+item.docId
-				})
-			},
-			editDoc(item){
-				uni.navigateTo({
-					url: './addDoc?type=edit&docId='+item.docId
-				})
-			},
-			delDoc(item){
-				uni.showModal({
-					title:"提示",
-					content:"确认删除吗?",
-					showCancel:true,
-					cancelText:'取消',
-					confirmText:'确定',
-					success:res=>{
-						if(res.confirm){
-							// 用户点击确定
-							var data={docId:item.docId}
-							delDoc(data).then(
-								res => {
-									if(res.code==200){
-										 uni.showToast({
-										 	icon:'success',
-										 	title: "操作成功",
-										 });
-										 this.getMyDocList()
-									}else{
-										uni.showToast({
-											icon:'none',
-											title: "请求失败",
-										});
-									}
-								},
-								rej => {}
-							);
-														
-						}else{
-							// 否则点击了取消  
-						}
-					}
-				})
-			},
-			getMyDocList(){
-				uni.showLoading({
-					title:"正在加载中"
-				})
-				getMyDocList().then(
-					res => {
-						uni.hideLoading()
-						if(res.code==200){
-							this.docs=res.data;
-						}else{
-							uni.showToast({
-								icon:'none',
-								title: "请求失败",
-							});
-						}
-					},
-					rej => {}
-				);
-			},
-			addDoc() {
-				uni.navigateTo({
-					url: '/pages_health/addUser?type=add'
-				})
-			}
-			 
-		}
-	}
-</script>
-
-<style lang="scss">
-	page{
-		height: 100%;
-	}
-	.content{
-		height: 100%;
-		display: flex;
-		flex-direction: column;
-		justify-content: space-between;
-		.inner{
-			flex: 1;
-			padding: 20upx 20upx 160upx;
-			.item{
-				background: #FFFFFF;
-				border-radius: 20upx;
-				margin-bottom: 20upx;
-				// padding: 40upx 30upx;
-				padding: 32rpx;
-				&:last-child{
-					margin-bottom: 0;
-				}
-				.user-info{
-					.user-top{
-						display: flex;
-						align-items: flex-start;
-						justify-content: space-between;
-						border-bottom: 1px solid #ECECEC;
-						padding-bottom: 40rpx;
-						.user-left{
-							display: flex;
-							align-items: center;
-							justify-content: flex-start;
-							.name{
-								font-family: PingFang SC;
-								font-weight: 500;
-								font-size: 36rpx;
-								color: #222426;
-								text-align: left;
-							}
-							.age-box{
-								display: flex;
-								align-items: center;
-								justify-content: center;
-								border-radius: 24rpx 24rpx 24rpx 24rpx;
-								margin-top: 16rpx;
-								width: 114rpx;
-								    height: 40rpx;
-								.age{
-									font-weight: 400;
-									font-size: 22rpx;
-									color: #626468;
-									line-height: 22rpx;
-									text-align: left;
-								}
-							}
-							
-						}
-						.user-phone{
-							font-family: PingFang SC;
-							font-weight: 500;
-							font-size: 28rpx;
-							color: #222426;
-							text-align: right;
-						}
-					}
-					.user-bottom{
-						display: flex;
-						align-items: center;
-						justify-content: flex-end;
-						padding-top: 20rpx;
-						.btn{
-							width: 176rpx;
-							height: 60rpx;
-							border-radius: 30rpx 30rpx 30rpx 30rpx;
-							border: 1rpx solid #B2B2B2;
-							font-size: 24rpx;
-							color: #222426;
-							line-height: 60rpx;
-							text-align: center;
-							margin-left:16rpx ;
-							&:last-child{
-								border: 1rpx solid #008FD3;
-								color: #008FD3;
-							}
-						}
-						
-					}
-					.gray-tag{
-						height: 46upx;
-						line-height: 46upx;
-						padding: 0 16upx;
-						font-size: 24upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #333333;
-						background: #F7F7F7;
-						border-radius: 8upx;
-						margin-right: 10upx;
-					}
-					.blue-tag{
-						height: 46upx;
-						line-height: 46upx;
-						padding: 0 16upx;
-						font-size: 24upx;
-						font-family: PingFang SC;
-						font-weight: bold;
-						color: #4BC9B1;
-						background: #E2F6F2;
-						border-radius: 8upx;
-					}
-				}
-				.stage-box{
-					white-space: nowrap;
-					overflow: hidden;
-					text-overflow: ellipsis;
-					margin-top: 34upx;
-					.stage{
-						font-size: 26upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #111111;
-						line-height: 1;
-					}
-					.stage-text{
-						font-size: 26upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #666666;
-						line-height: 1;
-					}
-				}
-				.progress-box{
-					margin-top: 18upx;
-				}
-				.period{
-					font-size: 28upx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #999999;
-					line-height: 1;
-					margin-top: 40upx;
-				}
-			}
-			 
-		}
-		.btn-box{
-			z-index: 9999;
-			width: 100%;
-			padding: 30upx;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			box-sizing: border-box;
-			// background: #FFFFFF;
-			
-	 
-			.sub-btn{
-				width: 100%;
-				height: 88upx;
-				line-height: 88upx;
-				text-align: center;
-				font-size: 30upx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #FFFFFF;
-				background: #008FD3;
-				border-radius: 44upx;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				image{
-					margin-right: 16rpx;
-				}
-			}
-		}
-		 
-	}
-</style>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików