Explorar o código

商城迁移代码

chenguo hai 5 días
pai
achega
fd460169da
Modificáronse 100 ficheiros con 13255 adicións e 0 borrados
  1. 59 0
      src/api/hisStore/chineseMedicine.js
  2. 69 0
      src/api/hisStore/city.js
  3. 63 0
      src/api/hisStore/components/IllnessLibraryDetails.vue
  4. 109 0
      src/api/hisStore/components/addBatchPublish.vue
  5. 72 0
      src/api/hisStore/components/addUser.vue
  6. 155 0
      src/api/hisStore/components/addUserAddress.vue
  7. 84 0
      src/api/hisStore/components/chineseMedicineDetails.vue
  8. 119 0
      src/api/hisStore/components/departmentDetails.vue
  9. 103 0
      src/api/hisStore/components/diseaseDetails.vue
  10. 119 0
      src/api/hisStore/components/doctorArticleDetails.vue
  11. 90 0
      src/api/hisStore/components/famousPrescribeDetails.vue
  12. 89 0
      src/api/hisStore/components/integralGoodsDetails.vue
  13. 312 0
      src/api/hisStore/components/integralOrderDetails.vue
  14. 80 0
      src/api/hisStore/components/medicatedFoodDetails.vue
  15. 369 0
      src/api/hisStore/components/offlineOrder.vue
  16. 398 0
      src/api/hisStore/components/productAfterSalesOrder.vue
  17. 114 0
      src/api/hisStore/components/productAttrValueSelect.vue
  18. 860 0
      src/api/hisStore/components/productOrder.vue
  19. 102 0
      src/api/hisStore/components/productSelect.vue
  20. 111 0
      src/api/hisStore/components/testReportDetails.vue
  21. 108 0
      src/api/hisStore/components/testTempDetails.vue
  22. 116 0
      src/api/hisStore/components/testTempItemDetails.vue
  23. 80 0
      src/api/hisStore/components/vesselDetails.vue
  24. 53 0
      src/api/hisStore/department.js
  25. 60 0
      src/api/hisStore/disease.js
  26. 62 0
      src/api/hisStore/doctorArticle.js
  27. 59 0
      src/api/hisStore/famousPrescribe.js
  28. 60 0
      src/api/hisStore/illnessLibrary.js
  29. 58 0
      src/api/hisStore/integralGoods.js
  30. 80 0
      src/api/hisStore/integralOrder.js
  31. 60 0
      src/api/hisStore/medicatedFood.js
  32. 53 0
      src/api/hisStore/prescribe.js
  33. 53 0
      src/api/hisStore/prescribeDrug.js
  34. 59 0
      src/api/hisStore/shippingTemplates.js
  35. 53 0
      src/api/hisStore/storeActivity.js
  36. 87 0
      src/api/hisStore/storeAfterSales.js
  37. 53 0
      src/api/hisStore/storeAfterSalesItem.js
  38. 53 0
      src/api/hisStore/storeAfterSalesStatus.js
  39. 21 0
      src/api/hisStore/storeCanvas.js
  40. 53 0
      src/api/hisStore/storeCart.js
  41. 70 0
      src/api/hisStore/storeCoupon.js
  42. 53 0
      src/api/hisStore/storeCouponIssue.js
  43. 53 0
      src/api/hisStore/storeCouponIssueUser.js
  44. 53 0
      src/api/hisStore/storeCouponUser.js
  45. 287 0
      src/api/hisStore/storeOrder.js
  46. 19 0
      src/api/hisStore/storeOrderAudit.js
  47. 53 0
      src/api/hisStore/storeOrderItem.js
  48. 53 0
      src/api/hisStore/storeOrderNotice.js
  49. 69 0
      src/api/hisStore/storeOrderOffline.js
  50. 53 0
      src/api/hisStore/storeOrderStatus.js
  51. 78 0
      src/api/hisStore/storePayment.js
  52. 96 0
      src/api/hisStore/storeProduct.js
  53. 53 0
      src/api/hisStore/storeProductAttr.js
  54. 53 0
      src/api/hisStore/storeProductAttrValue.js
  55. 59 0
      src/api/hisStore/storeProductCategory.js
  56. 53 0
      src/api/hisStore/storeProductDetails.js
  57. 53 0
      src/api/hisStore/storeProductGroup.js
  58. 71 0
      src/api/hisStore/storeProductPackage.js
  59. 53 0
      src/api/hisStore/storeProductRelation.js
  60. 62 0
      src/api/hisStore/storeProductReply.js
  61. 61 0
      src/api/hisStore/storeProductRule.js
  62. 53 0
      src/api/hisStore/storeProductTemplate.js
  63. 53 0
      src/api/hisStore/storeProductYuyue.js
  64. 53 0
      src/api/hisStore/storeShop.js
  65. 53 0
      src/api/hisStore/storeShopStaff.js
  66. 53 0
      src/api/hisStore/storeVisit.js
  67. 53 0
      src/api/hisStore/testReport.js
  68. 65 0
      src/api/hisStore/testTemp.js
  69. 53 0
      src/api/hisStore/testTempItem.js
  70. 117 0
      src/api/hisStore/user.js
  71. 61 0
      src/api/hisStore/userAddress.js
  72. 65 0
      src/api/hisStore/vessel.js
  73. 143 0
      src/utils/requestHisStore.js
  74. 364 0
      src/views/hisStore/companyUser/index.vue
  75. 63 0
      src/views/hisStore/components/IllnessLibraryDetails.vue
  76. 109 0
      src/views/hisStore/components/addBatchPublish.vue
  77. 72 0
      src/views/hisStore/components/addUser.vue
  78. 155 0
      src/views/hisStore/components/addUserAddress.vue
  79. 84 0
      src/views/hisStore/components/chineseMedicineDetails.vue
  80. 119 0
      src/views/hisStore/components/departmentDetails.vue
  81. 103 0
      src/views/hisStore/components/diseaseDetails.vue
  82. 119 0
      src/views/hisStore/components/doctorArticleDetails.vue
  83. 90 0
      src/views/hisStore/components/famousPrescribeDetails.vue
  84. 89 0
      src/views/hisStore/components/integralGoodsDetails.vue
  85. 312 0
      src/views/hisStore/components/integralOrderDetails.vue
  86. 80 0
      src/views/hisStore/components/medicatedFoodDetails.vue
  87. 369 0
      src/views/hisStore/components/offlineOrder.vue
  88. 398 0
      src/views/hisStore/components/productAfterSalesOrder.vue
  89. 114 0
      src/views/hisStore/components/productAttrValueSelect.vue
  90. 860 0
      src/views/hisStore/components/productOrder.vue
  91. 102 0
      src/views/hisStore/components/productSelect.vue
  92. 111 0
      src/views/hisStore/components/testReportDetails.vue
  93. 108 0
      src/views/hisStore/components/testTempDetails.vue
  94. 116 0
      src/views/hisStore/components/testTempItemDetails.vue
  95. 80 0
      src/views/hisStore/components/vesselDetails.vue
  96. 525 0
      src/views/hisStore/integralGoods/index.vue
  97. 483 0
      src/views/hisStore/integralOrder/index.vue
  98. 341 0
      src/views/hisStore/prescribe/index.vue
  99. 428 0
      src/views/hisStore/prescribeDrug/index.vue
  100. 426 0
      src/views/hisStore/storeActivity/index.vue

+ 59 - 0
src/api/hisStore/chineseMedicine.js

@@ -0,0 +1,59 @@
+import request from '@/utils/request'
+
+// 查询中药科普管理列表
+export function listChineseMedicine(query) {
+  return request({
+    url: '/his/chineseMedicine/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询中药科普管理详细
+export function getChineseMedicine(id) {
+  return request({
+    url: '/his/chineseMedicine/' + id,
+    method: 'get'
+  })
+}
+// 下载导入模板
+export function importTemplate() {
+  return request({
+    url: '/his/chineseMedicine/importTemplate',
+    method: 'get'
+  })
+}
+// 新增中药科普管理
+export function addChineseMedicine(data) {
+  return request({
+    url: '/his/chineseMedicine',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改中药科普管理
+export function updateChineseMedicine(data) {
+  return request({
+    url: '/his/chineseMedicine',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除中药科普管理
+export function delChineseMedicine(id) {
+  return request({
+    url: '/his/chineseMedicine/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出中药科普管理
+export function exportChineseMedicine(query) {
+  return request({
+    url: '/his/chineseMedicine/export',
+    method: 'get',
+    params: query
+  })
+}

+ 69 - 0
src/api/hisStore/city.js

@@ -0,0 +1,69 @@
+import request from '@/utils/request'
+
+// 查询城市列表
+export function listCity(query) {
+  return request({
+    url: '/store/city/list',
+    method: 'get',
+    params: query
+  })
+}
+export function getAllList(query) {
+  return request({
+    url: '/store/city/getAllList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getCitys() {
+  return request({
+    url: '/store/city/getCitys',
+    method: 'get'
+  })
+}
+
+
+
+// 查询城市详细
+export function getCity(id) {
+  return request({
+    url: '/store/city/' + id,
+    method: 'get'
+  })
+}
+
+// 新增城市
+export function addCity(data) {
+  return request({
+    url: '/store/city',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改城市
+export function updateCity(data) {
+  return request({
+    url: '/store/city',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除城市
+export function delCity(id) {
+  return request({
+    url: '/store/city/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出城市
+export function exportCity(query) {
+  return request({
+    url: '/store/city/export',
+    method: 'get',
+    params: query
+  })
+}

+ 63 - 0
src/api/hisStore/components/IllnessLibraryDetails.vue

@@ -0,0 +1,63 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         中医疾病详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 中医疾病信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="疾病名称"><span v-if="item!=null">{{item.illnessName}}</span></el-descriptions-item>
+          <el-descriptions-item label="舌脉"><span v-if="item!=null">{{item.tongueVein}}</span></el-descriptions-item>
+          <el-descriptions-item label="治法"><span v-if="item!=null">{{item.therapy}}</span></el-descriptions-item>
+           <el-descriptions-item label="症状"><span v-if="item!=null">{{item.symptom}}</span></el-descriptions-item>
+          <el-descriptions-item label="方剂名称"><span v-if="item!=null">{{item.formulaName}}</span></el-descriptions-item>
+          <el-descriptions-item label="方剂详情"><span v-if="item!=null">{{item.formulaDescs}}</span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+import { listillnessLibrary, getillnessLibrary, delillnessLibrary, addillnessLibrary, updateillnessLibrary, exportillnessLibrary } from "@/api/store/illnessLibrary";
+  export default {
+    name: "IllnessLibrary",
+    props:["data"],
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getillnessLibrary(orderId).then(response => {
+            this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 109 - 0
src/api/hisStore/components/addBatchPublish.vue

@@ -0,0 +1,109 @@
+<template>
+    <div>
+            <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+                <el-form-item label="优惠券数量" >
+                    {{ids.length}}个
+                </el-form-item>
+                <el-form-item label="优惠券开始时间" prop="startTime">
+                <el-date-picker clearable size="small" style="width: 200px"
+                    v-model="form.startTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择开始时间">
+                </el-date-picker>
+                </el-form-item>
+                <el-form-item label="优惠券结束时间" prop="limitTime">
+                <el-date-picker clearable size="small" style="width: 200px"
+                    v-model="form.limitTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择结束时间">
+                </el-date-picker>
+                </el-form-item>
+                <el-form-item label="优惠券领取数量" prop="totalCount">
+                <el-input-number v-model="form.totalCount" :min="0" placeholder="请输入优惠券领取数量" />
+                </el-form-item>
+            </el-form>
+             <div   class="footer">
+            <el-button type="primary" @click="submitForm">确 定</el-button>
+            <el-button @click="cancel">取 消</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+    import { batchPublishCoupon  } from "@/api/store/storeCoupon";
+export default {
+        name: "batchPublish",
+        data() {
+            return {
+                statusOptions:[],
+                ids:[],
+                // 表单参数
+                form: {},
+                // 表单校验
+                rules: {
+                    totalCount: [
+                    { required: true, message: "数量不能为空", trigger: "blur" }
+                    ],
+                    startTime: [
+                    { required: true, message: "开始时间不能为空", trigger: "blur" }
+                    ],
+                    limitTime: [
+                    { required: true, message: "结束时间不能为空", trigger: "blur" }
+                    ],
+                }
+            };
+        },
+        created() {
+
+        },
+        methods: {
+            cancel(){
+                this.$emit('close');
+            },
+            handleBatch(ids) {
+                console.log(ids)
+                this.ids=ids;
+
+            },
+            /** 提交按钮 */
+            submitForm() {
+                this.$refs["form"].validate(valid => {
+                    if (valid) {
+                        this.myloading = this.$loading({
+                            lock: true,
+                            text: '处理中...',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(0, 0, 0, 0.7)'
+                        });
+                        this.form.ids=this.ids.toString();
+                        batchPublishCoupon(this.form).then(response => {
+                            this.myloading.close()
+                            if (response.code === 200) {
+                                this.msgSuccess("发布成功");
+                                this.$emit('close');
+                            }
+                        });
+                    }
+                });
+            },
+        }
+    };
+</script>
+<style lang="scss" scoped>
+.contents{
+    height: 100%;
+    background-color: #fff;
+    padding: 20px;
+
+}
+.footer{
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+}
+</style>
+
+
+

+ 72 - 0
src/api/hisStore/components/addUser.vue

@@ -0,0 +1,72 @@
+<template>
+  <div >
+       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="会员昵称" prop="nickname">
+          <el-input v-model="form.nickname" placeholder="请输入用户昵称" />
+        </el-form-item>
+        <el-form-item label="手机号码" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号码" />
+        </el-form-item>
+        <el-form-item label="状态">
+            <el-radio-group v-model="form.status">
+              <el-radio :label="item.dictValue" v-for="item in statusOptions" >{{item.dictLabel}}</el-radio>
+            </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <div    style="text-align:right;">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+  </div>
+</template>
+
+<script>
+import { listUser, getUser, delUser, addUser, updateUser, exportUser } from "@/api/store/user";
+
+export default {
+  name: "add",
+  data() {
+    return {
+      statusOptions:[],
+      // 表单参数
+      form: {
+        status:"1"
+      },
+      // 表单校验
+      rules: {
+        phone: [
+          { required: true, message: "手机号不能为空", trigger: "blur" }
+        ],
+        nickname: [
+          { required: true, message: "会员昵称不能为空", trigger: "blur" }
+        ],
+         
+      }
+    };
+  },
+  created() {
+    this.getDicts("user_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+  },
+
+  methods: {
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          addUser(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("新增成功");
+              this.$emit("addUser")
+              
+            }
+          });
+        }
+      });
+    },
+     
+  }
+};
+</script>
+<style scoped>
+ 
+</style>

+ 155 - 0
src/api/hisStore/components/addUserAddress.vue

@@ -0,0 +1,155 @@
+<template>
+  <div >
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="收货人姓名" prop="realName">
+          <el-input v-model="form.realName" placeholder="请输入收货人姓名" />
+        </el-form-item>
+        <el-form-item label="收货人电话" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入收货人电话" />
+        </el-form-item>
+        <el-form-item label="收货地址" prop="district">
+          <el-row :gutter="20">
+          <el-col :span="6">
+             <el-select @change="provinceChange" v-model="form.province" placeholder="请选择">
+                <el-option
+                  v-for="item in province"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+          <el-col :span="6">
+            <el-select @change="cityChange" v-model="form.city" placeholder="请选择">
+                <el-option
+                  v-for="item in city"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+          <el-col :span="6">
+             <el-select @change="districtChange" v-model="form.district" placeholder="请选择">
+                <el-option
+                  v-for="item in district"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+        </el-row>
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detail">
+          <el-input v-model="form.detail" placeholder="请输入收货人详细地址" />
+        </el-form-item>
+      </el-form>
+      <div  style="text-align:right;">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+  </div>
+</template>
+
+<script>
+import { listUserAddress, getUserAddress, delUserAddress, addUserAddress, updateUserAddress, exportUserAddress } from "@/api/store/userAddress";
+import {getAllList} from "@/api/store/city";
+export default {
+  name: "add",
+  data() {
+    return {
+      citys:[],
+      province:[],
+      city:[],
+      district:[],
+      // 表单参数
+      form: {
+        province:null,
+        city:null,
+        district:null,
+        cityId:null,
+      },
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: "会员不能为空", trigger: "blur" }
+        ], 
+        realName: [
+          { required: true, message: "姓名不能为空", trigger: "blur" }
+        ],
+        phone: [
+          { required: true, message: "电话不能为空", trigger: "blur" }
+        ],
+        detail: [
+          { required: true, message: "详细地址不能为空", trigger: "blur" }
+        ],
+        district: [
+          { required: true, message: "收货地址不能为空", trigger: "blur" }
+        ],
+        
+      }
+    };
+  },
+  created(){
+    this.getCityList();
+  },
+  methods: {
+    districtChange(val){
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.district=item.name;
+
+    },
+    cityChange(val){
+      this.district=this.citys.filter(item => item.parentId===val )
+      this.form.district=null;
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.city=item.name;
+      this.form.cityId=val;
+        
+    },
+    provinceChange(val){
+      console.log(val)
+      this.city=this.citys.filter(item => item.parentId===val )
+      this.district=[];
+      this.form.city=null;
+      this.form.district=null;
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.province=item.name;
+    },
+    getCityList(){
+        getAllList().then(res => {
+          this.loading = false;
+          this.citys=res.data;
+          this.province=res.data.filter(item => item.level===0 )
+        })
+    },
+    init(userId){
+      this.form.userId=userId;
+    },
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          addUserAddress(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("新增成功");
+              this.$emit("addUserAddress")
+            }
+          });
+        }
+      });
+    },
+  }
+};
+</script>
+<style scoped>
+ 
+</style>

+ 84 - 0
src/api/hisStore/components/chineseMedicineDetails.vue

@@ -0,0 +1,84 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         中医科普详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 中医科普信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="图片" >
+            <el-image
+                    style="width: 100px"
+                    :src="item.imgUrl"
+                    :preview-src-list="[item.imgUrl]">
+            </el-image>
+          </el-descriptions-item>
+          <el-descriptions-item label="中药名称"><span v-if="item!=null">{{item.medicineName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="是否常见"><span v-if="item!=null"><dict-tag :options="isUsualOptions" :value="item.isUsual"/></span></el-descriptions-item>
+          <el-descriptions-item label="归经"><span v-if="item!=null">{{item.vessel}}</span></el-descriptions-item>
+          <el-descriptions-item label="五味"span="3"><span v-if="item!=null">{{item.flavor}}</span></el-descriptions-item>
+          <el-descriptions-item label="药物作用"span="3"><span v-if="item!=null"><span v-html="item.action"></span></span></el-descriptions-item>
+          <el-descriptions-item label="用药方法" span="3"><span v-if="item!=null"> <span v-html="item.usageMethod"></span></span></el-descriptions-item>
+          <el-descriptions-item label="基本信息" span="3"><span v-if="item!=null"> <span v-html="item.descs"></span></span></el-descriptions-item>
+          <el-descriptions-item label="注意事项" span="3"><span v-if="item!=null"> <span v-html="item.msg"></span></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listChineseMedicine, getChineseMedicine, delChineseMedicine, addChineseMedicine, updateChineseMedicine, exportChineseMedicine } from "@/api/store/chineseMedicine";
+  export default {
+    name: "coupon",
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+      this.getDicts("sys_company_or").then(response => {
+        this.isUsualOptions = response.data;
+      });
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getChineseMedicine(orderId).then(response => {
+            this.item = response.data;
+        
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 119 - 0
src/api/hisStore/components/departmentDetails.vue

@@ -0,0 +1,119 @@
+<template>
+<div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      科室详情
+    </div>
+<div class="contentx" v-if="item!=null">
+      <div class="desct">
+        科室信息
+      </div>
+
+        <el-descriptions title="" :column="3" border>
+            <el-descriptions-item label="科室名称" >
+                <span v-if="item!=null">{{item.deptName}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="科室编码" >
+                <span v-if="item!=null">{{item.deptCode}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="图标" >
+              <el-popover
+                placement="right"
+                title=""
+                trigger="hover">
+                <img slot="reference" :src="item.iconUrl" width="50px">
+                <img :src="item.iconUrl" style="max-width: 150px;">
+              </el-popover>
+
+            </el-descriptions-item>
+            <el-descriptions-item label="排序" >
+                <span v-if="item!=null">{{item.sort}}</span>
+            </el-descriptions-item>
+
+            <el-descriptions-item label="状态" >
+             <span v-if="item!=null">
+                   <dict-tag :options="statusOptions" :value="item.status"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="是否推荐" >
+             <span v-if="item!=null">
+                   <dict-tag :options="isTuiOptions" :value="item.isTui"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建时间" >
+                <span v-if="item!=null">{{item.createTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建者" >
+                <span v-if="item!=null">{{item.createBy}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="更新时间" >
+                <span v-if="item!=null">{{item.updateTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="更新者" >
+                <span v-if="item!=null">{{item.updateBy}}</span>
+            </el-descriptions-item>
+
+
+
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+  import { listDepartment, getDepartment, delDepartment, addDepartment, updateDepartment, exportDepartment } from "@/api/store/department";
+  export default {
+    name: "depdetails",
+    props:["data"],
+    data() {
+      return {
+        statusOptions: [],
+        isTuiOptions: [],
+        item:null,
+        form: {
+          sreason: '',
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+      this.getDicts("sys_company_or").then(response => {
+          this.isTuiOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getDepartment(orderId).then(response => {
+              this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 103 - 0
src/api/hisStore/components/diseaseDetails.vue

@@ -0,0 +1,103 @@
+<template>
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      疾病详情
+    </div>
+<div class="contentx" v-if="item!=null">
+      <div class="desct">
+        疾病信息
+      </div>
+        <el-descriptions title="" :column="3" border>
+            <el-descriptions-item label="疾病id"  >
+                <span v-if="item!=null">{{item.diseaseId}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="疾病名称" >
+                <span v-if="item!=null">{{item.diseaseName}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="疾病编号" >
+                <span v-if="item!=null">{{item.diseaseCode}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属科室" >
+                <span v-if="item!=null">{{item.deptName}}</span>
+            </el-descriptions-item>
+
+
+            <el-descriptions-item label="状态" >
+             <span v-if="item!=null">
+                   <dict-tag :options="statusOptions" :value="item.status"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建时间" >
+                <span v-if="item!=null">{{item.createTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="简介" span="6">
+                <span v-if="item!=null">{{item.introduction}}</span>
+            </el-descriptions-item>
+
+            <el-descriptions-item label="诊断" span="6">
+                <span v-if="item!=null">{{item.diagnose}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="症状" span="6">
+                      <span v-html="item.symptom"></span>
+
+            </el-descriptions-item>
+            <el-descriptions-item label="检验" span="6">
+                      <span v-html="item.inspect"></span>
+            </el-descriptions-item>
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+  import {getDisease} from '@/api/store/disease';
+  export default {
+    name: "desdetails",
+    props:["data"],
+    data() {
+      return {
+        statusOptions: [],
+        item:null,
+        form: {
+          sreason: '',
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getDisease(orderId).then(response => {
+              this.item = response.data;
+          });
+      },
+    }
+  }
+</script>
+<style>
+
+ .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>

+ 119 - 0
src/api/hisStore/components/doctorArticleDetails.vue

@@ -0,0 +1,119 @@
+<template>
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      文章详情
+    </div>
+    <div class="content" >
+      <div class="desct">
+        文章信息
+      </div>
+      <el-descriptions title="" :column="3" border>
+        <el-descriptions-item label="文章ID"  >
+            <span v-if="item!=null">{{item.articleId}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="封面图" >
+          <el-popover v-if="item!=null"
+            placement="right"
+            title=""
+            trigger="hover">
+            <img slot="reference" :src="item.imageUrl" width="50px">
+            <img :src="item.imageUrl" style="max-width: 150px;">
+          </el-popover>
+        </el-descriptions-item>
+        <el-descriptions-item label="分类" >
+            <dict-tag v-if="item!=null" :options="cateStatus" :value="item.cateId"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="标题" >
+            <span v-if="item!=null">{{item.title}}</span>
+        </el-descriptions-item>
+
+        <el-descriptions-item label="浏览量" >
+            <span v-if="item!=null">{{item.views}}</span>
+        </el-descriptions-item>
+
+        <el-descriptions-item label="状态" >
+        <span v-if="item!=null">
+              <dict-tag :options="articleStatus" :value="item.status"/>
+        </span>
+        </el-descriptions-item>
+        <el-descriptions-item label="创建时间" >
+            <span v-if="item!=null">{{item.createTime}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="更新时间" >
+            <span v-if="item!=null">{{item.updateTime}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="内容" >
+            <span v-if="item!=null" v-html="item.content"></span>
+        </el-descriptions-item>
+      </el-descriptions>
+    </div>
+    <div class="content" v-if="item!=null">
+      <div class="desct">
+        视频内容
+      </div>
+      <div style="display: flex; justify-content: center; align-items: center;">
+          <div style="display: grid; place-items: center;">
+             <video  :src="item.videoUrl" controls style="max-width: 400px; max-height: 400px;"></video>
+          </div>
+      </div>                         
+    </div>
+  </div>
+</template>
+
+<script>
+  import {getArticle} from "@/api/store/doctorArticle";
+  export default {
+    name: "articledetails",
+    props:["data"],
+    data() {
+      return {
+        cateStatus: [],
+        articleStatus: [],
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+      this.getDicts("sys_doctor_article_cate").then(response => {
+        this.cateStatus = response.data;
+      });
+      this.getDicts("sys_doctor_article_status").then(response => {
+        this.articleStatus = response.data;
+      });
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getArticle(orderId).then(response => {
+              this.item = response.data;
+          });
+      },
+    }
+  }
+</script>
+<style>
+
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>

+ 90 - 0
src/api/hisStore/components/famousPrescribeDetails.vue

@@ -0,0 +1,90 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         经典名方详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 经典名方信息</div>
+        <el-descriptions title="" :column="3" border>
+          <<el-descriptions-item label="图片" >
+              <el-image
+                      style="width: 100px"
+                      :src="item.imgUrl"
+                      :preview-src-list="[item.imgUrl]">
+              </el-image>
+            </el-descriptions-item>
+          <el-descriptions-item label="经典名方名称"><span v-if="item!=null">{{item.prescribeName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="方剂类型"><span v-if="item!=null"> <dict-tag :options="prescribeTypeOptions" :value="item.prescribeType"/></span></el-descriptions-item>
+           <el-descriptions-item label="主治疾病"><span v-if="item!=null">{{item.indication}}</span></el-descriptions-item>
+          <el-descriptions-item label="归属书籍" span="3"><span v-if="item!=null">{{item.belongBook}}</span></el-descriptions-item>
+          <el-descriptions-item label="药物作用"span="3"><span v-if="item!=null"><span v-html="item.action"></span></span></el-descriptions-item>
+          <el-descriptions-item label="用药方法" span="3"><span v-if="item!=null"> <span v-html="item.usageMethod"></span></span></el-descriptions-item>
+          <el-descriptions-item label="基本信息" span="3"><span v-if="item!=null"> <span v-html="item.descs"></span></span></el-descriptions-item>
+          <el-descriptions-item label="注意事项" span="3"><span v-if="item!=null"> <span v-html="item.msg"></span></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listFamousPrescribe, getFamousPrescribe, delFamousPrescribe, addFamousPrescribe, updateFamousPrescribe, exportFamousPrescribe } from "@/api/store/famousPrescribe";
+  export default {
+    name: "prescribeName",
+    data() {
+      return {
+        // 方剂类型字典
+        prescribeTypeOptions: [],
+        // 状态字典
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_famous_prescribe_type").then(response => {
+          this.prescribeTypeOptions = response.data;
+        });
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getFamousPrescribe(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 89 - 0
src/api/hisStore/components/integralGoodsDetails.vue

@@ -0,0 +1,89 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         积分商品详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分商品信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="商品名称"><span v-if="item!=null">{{item.goodsName}}</span></el-descriptions-item>
+          <el-descriptions-item label="封面图"> <el-image v-if="item.imgUrl!=null"
+                  style="width: 100px"
+                  :src="item.imgUrl"
+                  :preview-src-list="[item.imgUrl]">
+              </el-image></el-descriptions-item>
+          <el-descriptions-item label="商品分类"> <dict-tag :options="goodsTypeOptions" :value="item.goodsType"/></el-descriptions-item>
+          <el-descriptions-item label="原价"><span v-if="item!=null">{{item.otPrice}}</span></el-descriptions-item>
+
+
+          <el-descriptions-item label="所需积分"><span v-if="item!=null">{{item.integral}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="库存"><span v-if="item!=null">{{item.stock}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+    <div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分商品信息</div>
+    <span v-html="item.descs"></span>
+    </div>
+
+    </div>
+</template>
+
+<script>
+import { listIntegralGoods, getIntegralGoods, delIntegralGoods, addIntegralGoods, updateIntegralGoods, exportIntegralGoods } from "@/api/store/integralGoods";
+  export default {
+    name: "coupon",
+    data() {
+      return {
+        // 商品分类字典
+        goodsTypeOptions: [],
+        // 状态字典
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_integral_goods_type").then(response => {
+          this.goodsTypeOptions = response.data;
+        });
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getIntegralGoods(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 312 - 0
src/api/hisStore/components/integralOrderDetails.vue

@@ -0,0 +1,312 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         积分订单详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分订单信息</div>
+        <div class="order-status" v-if="item!=null" >
+                  <el-steps  :active="item.status==3?item.status:item.status-1" align-center finish-status="success">
+                    <el-step title="待发货"></el-step>
+                    <el-step title="待收货"></el-step>
+                    <el-step title="已完成"></el-step>
+                  </el-steps>
+        </div>
+         <el-card shadow="never" style="margin-top: 15px">
+           <div class="operate-container"  v-if="item!=null">
+             <span style="margin-left: 20px" class="color-danger">订单状态:
+                <el-tag prop="status" v-for="(ite, index) in statusOptions"    v-if="item.status==ite.dictValue">{{ite.dictLabel}}</el-tag>
+             </span>
+             <div class="operate-button-container"  v-if="item.status==1" v-hasPermi="['his:integralOrder:sendGoods']">
+                <el-button size="mini" @click="sendVisible=true" >发货</el-button>
+             </div>
+            <div class="operate-button-container"   v-if="item.deliverySn!=null" v-hasPermi="['his:integralOrder:express']">
+              <el-button size="mini" @click="showExpress()" >查看物流</el-button>
+            </div>
+
+            <div class="operate-button-container"  v-hasPermi="['his:integralOrder:edit']">
+              <el-button size="mini" @click="updateOrder()" >修改订单</el-button>
+            </div>
+           </div>
+           <div class="desct">
+            基本信息
+           </div>
+           <el-descriptions title="" :column="3" border>
+             <el-descriptions-item label="订单编号"><span v-if="item!=null">{{item.orderCode}}</span></el-descriptions-item>
+              <el-descriptions-item label="会员ID"><span v-if="item!=null">{{item.userId}}</span></el-descriptions-item>
+             <el-descriptions-item label="会员"><span v-if="item.nickName!=null">{{item.nickName}}({{item.phone}})</span></el-descriptions-item>
+             <el-descriptions-item label="用户名称"><span v-if="item!=null">{{item.userName}}</span></el-descriptions-item>
+             <el-descriptions-item label="用户电话"><span v-if="item!=null">{{item.userPhone}}</span>
+              <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['his:integralOrder:queryPhone']"></el-button>
+            </el-descriptions-item>
+              <el-descriptions-item label="用户地址"><span v-if="item!=null">{{item.userAddress}}</span></el-descriptions-item>
+             <el-descriptions-item label="支付积分"><span v-if="item!=null">{{item.integral}}</span></el-descriptions-item>
+             <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+             <el-descriptions-item label="快递公司编号"><span v-if="item!=null">{{item.deliveryCode}}</span></el-descriptions-item>
+             <el-descriptions-item label="快递名称"><span v-if="item!=null">{{item.deliveryName}}</span></el-descriptions-item>
+             <el-descriptions-item label="快递单号"><span v-if="item!=null">{{item.deliverySn}}</span></el-descriptions-item>
+             <el-descriptions-item label="发货时间"><span v-if="item!=null">{{item.deliveryTime}}</span></el-descriptions-item>
+             <el-descriptions-item label="提交时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+           </el-descriptions>
+         </el-card>
+
+    </div>
+      <div class="contentx" v-if="item!=null" style="padding-bottom: 70px;">
+       <div class="desct">
+           商品信息
+          </div>
+       <el-table
+              border
+              v-if="prod!=null"
+              :data="prod"
+              size="small"
+              style="margin-top: 20px" >
+              <el-table-column label="商品图片"  align="center">
+                <template slot-scope="scope">
+                  <img :src="scope.row.imgUrl" style="height: 80px">
+                </template>
+              </el-table-column>
+              <el-table-column label="商品名称"  align="center">
+                <template slot-scope="scope">
+                  <p>{{scope.row.goodsName}}</p>
+                </template>
+              </el-table-column>
+              <el-table-column label="积分" align="center">
+                <template slot-scope="scope">
+                  <p>¥{{scope.row.integral}}</p>
+                </template>
+              </el-table-column>
+
+            </el-table>
+       </div>
+      <el-dialog
+           width="50%"
+           title="发货"
+           :visible.sync="sendVisible"
+           append-to-body @close="sendCancel">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+          <el-form-item label="快递公司编号" prop="deliveryCode">
+                    <el-input v-model="form.deliveryCode" placeholder="请输入快递公司编号" />
+                  </el-form-item>
+                  <el-form-item label="快递名称" prop="deliveryName">
+                    <el-input v-model="form.deliveryName" placeholder="请输入快递名称" />
+                  </el-form-item>
+                  <el-form-item label="快递单号" prop="deliverySn">
+                    <el-input v-model="form.deliverySn" placeholder="请输入快递单号" />
+                  </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+                          <el-button type="primary" @click="sendGoods">确 定</el-button>
+                          <el-button @click="sendCancel">取 消</el-button>
+        </div>
+
+          </el-dialog>
+
+          <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
+            <el-table style="margin-top: 20px;width: 100%"
+                      ref="orderHistoryTable"
+                      :data="traces" border>
+              <el-table-column label="操作时间"  width="160" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.AcceptTime}}
+                </template>
+              </el-table-column>
+               <el-table-column label="位置" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.Location}}
+                </template>
+              </el-table-column>
+              <el-table-column label="描述" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.AcceptStation}}
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-dialog>
+
+          <el-dialog :title="editOrder.title" :visible.sync="editOrder.open" width="600px" append-to-body>
+            <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
+              <el-form-item label="订单状态" prop="status" >
+                <el-select v-model="editForm.status" placeholder="请选择状态" clearable size="small" filterable>
+                    <el-option
+                      v-for="dict in statusOptions "
+                      :key="dict.dictValue"
+                      :label="dict.dictLabel"
+                      :value="dict.dictValue"
+                    />
+                  </el-select>
+                </el-form-item>
+              <el-form-item label="详情地址" prop="userAddress"  >
+                <el-input v-model="editForm.userAddress" placeholder="请输入" />
+              </el-form-item>
+              <el-form-item label="备注" prop="remark"  >
+                <el-input v-model="editForm.remark" placeholder="请输入备注" />
+              </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitEditForm">确 定</el-button>
+            </div>
+          </el-dialog>
+    </div>
+</template>
+
+<script>
+import {getExpress, listIntegralOrder, sendgoods,getIntegralOrder, delIntegralOrder, addIntegralOrder, updateIntegralOrder, exportIntegralOrder,getOrderUserPhone } from "@/api/store/integralOrder";
+  export default {
+    name: "integralOrder",
+    data() {
+      return {
+        expressDialog:{
+          title:"物流信息",
+          open:false,
+        },
+        editOrder:{
+          title:"修改订单",
+          open:false,
+        },
+        editForm:{
+          orderId:null,
+          status:null,
+          userAddress:null,
+          remark:"",
+        },
+        editRules:{},
+        item:null,
+        express:null,
+        traces:[],
+        rules:{
+      deliveryCode: [
+        { required: true, message: '请输入快递公司编号', trigger: 'blur' }
+      ],
+      deliveryName: [
+        { required: true, message: '请输入快递名称', trigger: 'blur' }
+      ],
+      deliverySn: [
+        { required: true, message: '请输入快递单号', trigger: 'blur' }
+      ]
+    },
+        sendVisible:false,
+        form: {
+          deliveryCode: null,
+          deliveryName:null,
+          deliverySn:null,
+          orderId:null,
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_integral_order_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      handlePhone(){
+        const orderId = this.item.orderId;
+        getOrderUserPhone(orderId).then(response =>{
+            this.item.userPhone = response.userPhone;
+        })
+      },
+      updateOrder(){
+        this.editOrder.open=true;
+        this.editForm.orderId=this.item.orderId;
+        this.editForm.remark=this.item.remark;
+        this.editForm.status = this.item.status.toString();
+        this.editForm.userAddress = this.item.userAddress.toString();
+      },
+     //修改订单状态
+     submitEditForm(){
+        this.$refs["editForm"].validate(valid => {
+        if (valid) {
+          updateIntegralOrder(this.editForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.editOrder.open = false;
+              this.getDetails(this.item.orderId);
+              }
+            });
+          }
+        });
+      },
+      sendCancel(){
+           this.sendVisible = false;
+           this.form={
+             deliveryCode: null,
+             deliveryName:null,
+             deliverySn:null,
+             orderId:null,
+           }
+      },
+      showExpress(){
+        this.expressDialog.open=true;
+        getExpress(this.item.orderId).then(response => {
+            this.express = response.data;
+            if(this.express!=null&&this.express.Traces!=null){
+                this.traces=this.express.Traces
+            }
+        });
+      },
+          sendGoods(){
+              this.form.orderId=this.item.orderId;
+              sendgoods(this.form).then(response => {
+                    this.msgSuccess("修改成功");
+                    this.sendVisible = false;
+                    getIntegralOrder(this.item.orderId).then(response => {
+                        this.item = response.data;
+                        this.$parent.$parent.getList();
+                    });
+
+                    this.form={
+                    deliveryCode: null,
+                    deliveryName:null,
+                    deliverySn:null,
+                    orderId:null,
+                  }
+              });
+            },
+      getDetails(orderId) {
+        this.item=null;
+        getIntegralOrder(orderId).then(response => {
+            this.item = response.data;
+            this.prod=[JSON.parse(this.item.itemJson)];
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+.order-content{
+  margin: 10px;
+
+}
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+</style>

+ 80 - 0
src/api/hisStore/components/medicatedFoodDetails.vue

@@ -0,0 +1,80 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         药膳详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 药膳信息</div>
+        <el-descriptions title="" :column="3" border>
+          <<el-descriptions-item label="图片" >
+              <el-image
+                      style="width: 100px"
+                      :src="item.imgUrl"
+                      :preview-src-list="[item.imgUrl]">
+              </el-image>
+            </el-descriptions-item>
+          <el-descriptions-item label="药膳名称"><span v-if="item!=null">{{item.foodName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+           <el-descriptions-item label="功效"><span v-if="item!=null">{{item.action}}</span></el-descriptions-item>
+          <el-descriptions-item label="食材"><span v-if="item!=null">{{item.food}}</span></el-descriptions-item>
+
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="主治疾病" span="3"><span v-if="item!=null" >{{item.indications}}</span></el-descriptions-item>
+          <el-descriptions-item label="描述" span="3"><span v-if="item!=null" > <span v-html="item.descs"></span></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listMedicatedFood, getMedicatedFood, delMedicatedFood, addMedicatedFood, updateMedicatedFood, exportMedicatedFood } from "@/api/store/medicatedFood";
+  export default {
+    name: "MedicatedFoodDetails",
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getMedicatedFood(orderId).then(response => {
+            this.item = response.data;
+       
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 369 - 0
src/api/hisStore/components/offlineOrder.vue

@@ -0,0 +1,369 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="order!=null" >
+          <el-steps  :active="order.status===3?order.status+1:order.status" align-center>
+            <el-step title="客服制单"></el-step>
+            <el-step title="待业务核实"></el-step>
+            <el-step title="待主管审核"></el-step>
+            <el-step title="内勤对流向"></el-step>
+          </el-steps>
+      </div>
+      <div>
+
+      <el-card shadow="never" style="margin-top: 15px">
+      <div class="operate-container"  v-if="order!=null">
+        <span  style="margin-left: 20px" class="color-danger">订单状态:
+           <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="order.status.toString()===item.dictValue">{{item.dictLabel}}</el-tag>
+        </span>
+
+        <div class="operate-button-container" >
+          <el-button size="mini" v-if="order.status ===2" @click="handleAudit()"  v-hasPermi="['store:storeOrderOffline:audit']" >主管审核</el-button>
+        </div>
+      </div>
+      <div style="margin: 20px 0px"  v-if="order!=null">
+        <span class="font-small">
+          基本信息
+        </span>
+      </div>
+      <el-descriptions :column="4" border  >
+        <el-descriptions-item label="订单ID"  >
+                <span v-if="order!=null">
+                  {{order.orderId}}
+                </span>
+        </el-descriptions-item>
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="order!=null">
+                  {{order.orderCode}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="客户名称"  >
+                <span v-if="order!=null">
+                  {{order.customerName}}
+                </span>
+            </el-descriptions-item>
+
+
+            <el-descriptions-item label="客户电话"  >
+                <span v-if="order!=null ">
+                  {{order.mobile }}
+                </span>
+                <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrderOffline:queryPhone']"></el-button>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="order!=null " label="应付金额"  >
+                <span >
+                  {{order.payPrice }}
+                </span>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="order!=null " label="实付金额"  >
+                <span >
+                  {{order.payMoney }}
+                </span>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="customerInfo!=null " label="客户编码"  >
+                <span >
+                  {{customerInfo.customerCode }}
+                </span>
+              </el-descriptions-item>
+            <el-descriptions-item label="创建时间"  >
+                <span v-if="order!=null ">
+                  {{order.createTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属客服"  >
+                <span v-if="order!=null ">
+                  {{order.companyUserName }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属部门"  >
+              <span v-if="order!=null ">
+                {{order.companyName }}
+              </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属业务员"  >
+              <span v-if="order!=null ">
+                {{order.uploadUserName }}
+              </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="凭证上传时间"  >
+                  <span v-if="order!=null ">
+                    {{order.uploadTime }}
+                  </span>
+            </el-descriptions-item>
+        <el-descriptions-item label="审核人"  >
+                  <span v-if="order!=null ">
+                    {{order.auditBy }}
+                  </span>
+        </el-descriptions-item>
+        <el-descriptions-item label="审核时间"  >
+                  <span v-if="order!=null ">
+                    {{order.auditTime }}
+                  </span>
+        </el-descriptions-item>
+            <el-descriptions-item label="备注"  >
+                <span v-if="order!=null ">
+                  {{order.remark }}
+                </span>
+            </el-descriptions-item>
+
+
+
+      </el-descriptions>
+      <div style="margin: 20px 0px"  v-if="certificates!=null">
+        <span class="font-small">
+          凭证信息
+        </span>
+      </div>
+      <el-image
+          v-if="this.certificates != null"
+          :src="certificates"
+          :preview-src-list="[certificates]"
+          :style="{ width: '100px', height: '100px' }"
+          @click.native="showImageDialog"
+        ></el-image>
+        <el-dialog :visible.sync="dialogVisibleImage" width="10%">
+          <img :src="certificates" style="width: 100%" alt="">
+        </el-dialog>
+
+      <div style="margin-top: 20px">
+        <span class="font-small">商品信息</span>
+      </div>
+      <el-table
+        border
+        v-if="items!=null"
+        :data="items"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+        <el-table-column label="商品图片" width="150" align="center">
+          <template slot-scope="scope">
+            <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+          </template>
+        </el-table-column>
+        <el-table-column label="商品名称" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="单价" width="240" align="center">
+          <template slot-scope="scope">
+            <p>¥{{JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="规格" width="240" align="center">
+          <template slot-scope="scope">
+            {{JSON.parse(scope.row.jsonInfo).sku}}
+          </template>
+        </el-table-column>
+        <el-table-column label="数量" width="180" align="center">
+          <template slot-scope="scope">
+            {{scope.row.num}}
+          </template>
+        </el-table-column>
+<!--        <el-table-column label="小计"  align="center">-->
+<!--          <template slot-scope="scope" >-->
+<!--            ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+      </el-table>
+<!--      <div style="float: right;margin: 20px" v-if="order!=null">-->
+<!--        合计:<span class="color-danger">¥{{order.totalPrice.toFixed(2)}}</span>-->
+<!--      </div>-->
+      </el-card>
+    </div>
+    <el-dialog :title="certificateDialig.title" :visible.sync="certificateDialig.open" append-to-body>
+      <el-form ref="certificateForm" :model="certificateForm" :rules="certificateRules" label-width="100px">
+        <el-form-item label="凭证" prop="certificates">
+          <ImageUpload v-model="photoArr" type="image" :limit="1" :width="150" :height="150" />
+        </el-form-item>
+        <el-form-item label="实付金额" prop="payPrice">
+          <el-input-number v-model="certificateForm.payMoney"  size="mini"    ></el-input-number>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleConfirm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+      :append-to-body="true"
+      size="75%"
+      :title="customer.title" :visible.sync="customer.open" append-to-body
+      >
+        <customer-details  ref="customerDetails" />
+    </el-drawer>
+
+  </div>
+</template>
+
+<script>
+import { listStoreOrderOffline, getStoreOrderOffline,auditOrder,getPhone } from "@/api/store/storeOrderOffline";
+import ImageUpload from '@/components/ImageUpload'
+import customerDetails from '../../crm/components/customerDetails.vue';
+export default {
+  name: "offlineOrder",
+  components: {customerDetails,
+    ImageUpload},
+  data() {
+    return {
+      customerUserStatusOptions:[],
+      scheduleOptions:[],
+      dialogVisibleImage: false,
+      customerInfo:null,
+      customer:{
+        title:"客户详情",
+        open:false,
+      },
+      photoArr:null,
+      certificateDialig:{
+        title:"上传凭证",
+        open:false,
+      },
+      certificateForm:{
+        payMoney:null,
+        certificates:null,
+      },
+      addSms:{
+        open:false,
+        title:"发短信"
+      },
+      certificateRules:{
+        certificates:[
+          { required: true, message: "凭证不能为空", trigger: "change" }
+        ]
+      },
+      customers:[],
+
+      orderId:null,
+      statusOptions:[],
+      certificates:null,
+      order:null,
+      user:{},
+      logs:[],
+      items:[],
+      express:[],
+      traces:[],
+      payments:[],
+    };
+  },
+  created() {
+    this.getDicts("crm_customer_user_status").then((response) => {
+            this.customerUserStatusOptions = response.data;
+        });
+    this.getDicts("sys_order_offline_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+
+  },
+  computed: {
+  },
+  methods: {
+
+    handlePhone(){
+        const id = this.orderId;
+        getPhone(id).then(response =>{
+          this.order.mobile = response.userPhone;
+        })
+      },
+
+    showImageDialog() {
+      this.dialogVisible = true;
+    },
+    handleCustomer(){
+      var that=this;
+      this.customer.open = true;
+      setTimeout(() => {
+          that.$refs.customerDetails.getDetails(this.order.crmId);
+      }, 200);
+    },
+    handleCertificates(){
+      this.certificateDialig.open = true;
+      this.photoArr = null;
+    },
+    handleConfirm(){
+      this.certificateForm.orderId = this.orderId;
+      this.certificateForm.certificates = this.photoArr;
+      uploadCredentials(this.certificateForm).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("上传成功");
+                this.certificateDialig.open = false;
+                this.getOfflineOrder(this.orderId);
+              }
+            });
+    },
+    getOfflineOrder(orderId){
+      this.order = null;
+      this.orderId=orderId;
+      this.certificates = null;
+      getStoreOrderOffline(orderId).then(response => {
+            this.order = response.order;
+            if(response.order.certificates != null){
+              this.certificates = response.order.certificates;
+            }
+            this.items = response.items;
+            this.customerInfo=response.customer;
+        });
+     },
+    /** 审核按钮操作 */
+    handleAudit() {
+      this.$confirm('是否确认审核线下订单编号为"' + this.orderId + '"的数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        return auditOrder(this.orderId);
+      }).then(() => {
+        this.getOfflineOrder(this.orderId);
+        this.msgSuccess("审核成功");
+      }).catch(() => {});
+    }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+}
+.detail-container {
+  width: 80%;
+  padding: 20px 20px 20px 20px;
+  margin: 20px auto;
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+
+.table-layout {
+  margin-top: 20px;
+  border-left: 1px solid #DCDFE6;
+  border-top: 1px solid #DCDFE6;
+}
+
+.table-cell {
+  height: 60px;
+  line-height: 40px;
+  border-right: 1px solid #DCDFE6;
+  border-bottom: 1px solid #DCDFE6;
+  padding: 10px;
+  font-size: 14px;
+  color: #606266;
+  text-align: center;
+  overflow: hidden;
+}
+
+.table-cell-title {
+  border-right: 1px solid #DCDFE6;
+  border-bottom: 1px solid #DCDFE6;
+  padding: 10px;
+  background: #F2F6FC;
+  text-align: center;
+  font-size: 14px;
+  color: #303133;
+}
+</style>

+ 398 - 0
src/api/hisStore/components/productAfterSalesOrder.vue

@@ -0,0 +1,398 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="afterSales!=null" >
+          <el-steps  :active="afterSales.status==4?afterSales.status+1:afterSales.status" align-center>
+            <el-step title="待审核(24小时自动审核)"></el-step>
+            <el-step title="平台已审核等待用户发货"></el-step>
+            <el-step title="用户已发货待仓库审核"></el-step>
+            <el-step title="财务审核"></el-step>
+            <el-step title="退款成功"></el-step>
+          </el-steps>
+      </div>
+      <div v-if="afterSales!=null">
+      <el-card shadow="never" style="margin-top: 15px">
+        <div class="operate-container">
+          <span style="margin-left: 20px" class="color-danger">售后状态:
+            <el-tag prop="status" v-for="(item, index) in salesStatusOptions"    v-if="afterSales.salesStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+          </span>
+          <div class="operate-button-container"  >
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:edit']" v-show="afterSales.salesStatus==0&&afterSales.status===1"  @click="addDelivery">编辑物流</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:audit1']" v-show="afterSales.salesStatus==0&&afterSales.status===0" @click="handleAudit1">平台审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:audit2']" v-show="afterSales.salesStatus==0&&afterSales.status===2" @click="handleAudit2">仓库审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:refund']" @click="handleRefund"  v-show="afterSales.salesStatus==0&&afterSales.status===3">财务审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:cancel']" @click="cancel"  v-show="afterSales.salesStatus==0">撤销</el-button>
+            <el-button size="mini"  @click="showOrder">查看订单</el-button>
+         </div>
+        </div>
+        <div style="margin: 20px 0px">
+          <span class="font-small">基本信息</span>
+        </div>
+        <el-descriptions   :column="4" border  >
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.orderCode}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="会员"  >
+                <span v-if="user!=null">
+                  {{user.nickname}}({{user.phone}})
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="退款金额"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.refundAmount}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="申请类型"  >
+                <span v-if="afterSales!=null">
+                  <el-tag  v-for="(item, index) in serviceTypeOptions"    v-if="afterSales.serviceType==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="申请原因"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.reasons}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="说明"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.explains}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="状态"  >
+                <span v-if="afterSales!=null">
+                  <el-tag   v-for="(item, index) in statusOptions"    v-if="afterSales.status==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="售后状态"  >
+                <span v-if="afterSales!=null">
+                  <el-tag  v-for="(item, index) in salesStatusOptions"    v-if="afterSales.salesStatus==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+
+        </el-descriptions>
+        <div style="margin: 20px 0px">
+          <span class="font-small">收货信息</span>
+        </div>
+        <el-descriptions   :column="4" border  >
+            <el-descriptions-item label="收货人"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.consignee}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货人"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.consignee}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="手机号码"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.phoneNumber}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货地址"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.address}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递公司"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.deliveryName}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="运单号"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.deliverySn}}
+                </span>
+            </el-descriptions-item>
+        </el-descriptions>
+        <div style="margin-top: 20px">
+          <span class="font-small">商品信息</span>
+        </div>
+        <el-table
+          border
+          :data="items"
+          size="small"
+          style="width: 100%;margin-top: 20px" >
+          <el-table-column label="商品图片" width="150" align="center">
+            <template slot-scope="scope">
+              <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+            </template>
+          </el-table-column>
+          <el-table-column label="商品名称" width="300" align="center">
+            <template slot-scope="scope">
+              <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="价格" width="240" align="center">
+            <template slot-scope="scope">
+              <p>价格:¥{{JSON.parse(scope.row.jsonInfo).price}}</p>
+
+            </template>
+          </el-table-column>
+          <el-table-column label="属性" width="240" align="center">
+            <template slot-scope="scope">
+              {{JSON.parse(scope.row.jsonInfo).sku}}
+            </template>
+          </el-table-column>
+          <el-table-column label="数量" width="180" align="center">
+            <template slot-scope="scope">
+                {{scope.row.num}}
+            </template>
+          </el-table-column>
+          <el-table-column label="小计"  align="center">
+            <template slot-scope="scope">
+              ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price}}
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top: 20px">
+          <svg-icon icon-class="marker" style="color: #606266"></svg-icon>
+          <span class="font-small">操作信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  ref="orderHistoryTable"
+                  :data="logs" border>
+          <el-table-column label="操作时间"  width="160" align="center">
+            <template slot-scope="scope">
+              {{scope.row.changeTime}}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{scope.row.changeMessage}}
+            </template>
+          </el-table-column>
+          <el-table-column label="操作员" align="center">
+            <template slot-scope="scope">
+              {{scope.row.operator}}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+
+    </div>
+    <el-dialog :title="audit.title" :visible.sync="audit.open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="退款金额" prop="refundAmount"  >
+          <el-input-number v-model="form.refundAmount" :min="0"  />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitAuditForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+    :append-to-body="true"
+     size="75%"
+      :title="show.title" :visible.sync="show.open"
+      >
+      <product-order  ref="productOrder" />
+    </el-drawer>
+    <el-dialog :title="add.title" :visible.sync="add.open" width="500px" append-to-body>
+
+      <div slot="footer" class="dialog-footer">
+        <el-form ref="addForm" :model="addForm" :rules="addRules" label-width="100px">
+          <el-form-item label="id" prop="id" v-if="false">
+            <el-input v-model="addForm.id" placeholder="请输入"  />
+          </el-form-item>
+          <el-form-item label="快递公司" prop="deliveryName">
+            <el-input v-model="addForm.deliveryName" placeholder="请输入"  />
+          </el-form-item>
+          <el-form-item label="运单号" prop="deliverySn">
+            <el-input v-model="addForm.deliverySn" placeholder="请输入"  />
+          </el-form-item>
+        </el-form>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel1">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {getStoreAfterSales,cancel,refund,audit1,audit2,updateStoreAfterSales} from "@/api/store/storeAfterSales";
+
+import productOrder from "./productOrder";
+export default {
+  components: { productOrder },
+  name: "order",
+  data() {
+    return {
+      show:{
+        open:false,
+        title:"订单详情"
+      },
+      audit:{
+          title:"财务审核",
+          open:false,
+      },
+      add:{
+        open:false,
+        title:"添加物流"
+      },
+      addForm:{
+        id:null,
+        deliveryName:null,
+        deliverySn:null
+      },
+      addRules:{
+        deliveryName: [
+          { required: true, message: "物流名称不能为空", trigger: "blur" }
+        ],
+        deliverySn: [
+          { required: true, message: "物流单号不能为空", trigger: "blur" }
+        ],
+      },
+      order:null,
+      user:null,
+      serviceTypeOptions:[],
+      salesStatusOptions:[],
+      statusOptions:[],
+      afterSales:null,
+      items:[],
+      logs:[],
+      form:{
+        refundAmount:0,
+      },
+      rules:{
+        status: [
+          { required: true, message: "状态不能为空", trigger: "blur" }
+        ],
+        refundAmount: [
+          { required: true, message: "退款金额不能为空", trigger: "blur" }
+        ],
+      }
+
+    };
+  },
+  created() {
+    this.getDicts("store_after_sales_sales_status").then((response) => {
+        this.salesStatusOptions = response.data;
+    });
+    this.getDicts("store_after_sales_status").then((response) => {
+        this.statusOptions = response.data;
+    });
+     this.getDicts("store_after_sales_service_type").then((response) => {
+        this.serviceTypeOptions = response.data;
+    });
+  },
+  methods: {
+    submitForm() {
+      var id=this.afterSales.id;
+      this.addForm.id = id;
+      updateStoreAfterSales(this.addForm).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("编辑成功");
+                this.add.open = false;
+                this.getStoreAfterSales(id);
+              }
+            });
+    },
+    cancel1(){
+      this.add.open = false;
+    },
+    addDelivery(){
+      this.add.open = true;
+      this.addForm.deliveryName = this.afterSales.deliveryName;
+      this.addForm.deliverySn = this.afterSales.deliverySn;
+    },
+    showOrder(){
+      this.show.open=true;
+      const orderId = this.order.id ;
+      setTimeout(() => {
+        this.$refs.productOrder.getOrder(orderId);
+      }, 500);
+    },
+    handleAudit1(){
+      var id=this.afterSales.id;
+      this.$confirm('确定审请通过?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={salesId:id}
+          return audit1(data);
+        }).then(() => {
+          this.getStoreAfterSales(id);
+          this.msgSuccess("操作成功");
+        }).catch(function() {});
+
+    },
+    handleAudit2(){
+      var id=this.afterSales.id;
+      this.$confirm('确定审请通过?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={salesId:id}
+          return audit2(data);
+        }).then(() => {
+          this.getStoreAfterSales(id);
+          this.msgSuccess("操作成功");
+        }).catch(function() {});
+
+    },
+    handleRefund(){
+        this.audit.open=true;
+        this.form.salesId=this.afterSales.id;
+        this.form.refundAmount=this.afterSales.refundAmount;
+    },
+    submitAuditForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          refund(this.form).then(response => {
+              if (response.code === 200) {
+                this.audit.open = false;
+                this.getStoreAfterSales(this.afterSales.id);
+                this.msgSuccess("操作成功");
+              }
+            });
+        }
+      });
+    },
+    cancel(){
+      var id=this.afterSales.id;
+      this.$prompt('是否确定取消订单?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      }).then(({ value }) => {
+        var data={salesId:id,remark:value};
+        return cancel(data);
+      }).then(() => {
+        this.getStoreAfterSales(id);
+        this.msgSuccess("操作成功");
+      }).catch(() => {
+
+      });
+    },
+    getStoreAfterSales(id){
+        getStoreAfterSales(id).then(response => {
+            this.afterSales = response.afterSales;
+            this.logs = response.logs;
+            this.items = response.items;
+            this.user=response.user;
+            this.order=response.order;
+        });
+     }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+
+</style>

+ 114 - 0
src/api/hisStore/components/productAttrValueSelect.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="product-select" >
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="商品名称" prop="productName">
+        <el-input
+          style="width:200px"
+          v-model="queryParams.productName"
+          placeholder="请输入商品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table border v-loading="loading" :data="list">
+      <el-table-column label="商品编号" align="center" prop="barCode" />
+      <el-table-column label="商品图片" align="center" width="100">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.image" width="80">
+            <img :src="scope.row.image" style="max-width: 80px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+      <el-table-column label="商品规格" align="center" prop="sku" />
+      <el-table-column label="库存" align="center" prop="stock" />
+      <el-table-column label="单价" align="center" prop="price" />
+      <el-table-column label="操作" align="center" width="100px" >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleSelect(scope.row)"
+          >选择</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      style="padding-bottom:10px;"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { getStoreProductAttrValueList } from "@/api/store/storeProduct";
+export default {
+  name: "selectProduct",
+  props: {
+    companyId:{
+      type: Number,
+      default: null
+    }
+  },
+  data() {
+    return {
+      loading: true,
+      list:[],
+      total: 0,
+      queryParams: {
+        productName:"",
+        pageNum: 1,
+        pageSize: 10,
+        isPackage:0,
+        companyId: this.companyId
+      }
+    };
+  },
+  created() {
+     this.getList();
+  },
+  methods: {
+    getData(isPackage){
+      this.queryParams.isPackage=isPackage;
+      this.getList();
+
+    },
+    handleSelect(row){
+      this.$emit('selectProduct',row);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    getList(){
+      this.loading = true;
+      getStoreProductAttrValueList(this.queryParams).then(response => {
+        this.list = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    }
+  }
+};
+</script>
+<style scoped>
+
+.product-select{
+  padding-bottom: 15px;
+}
+</style>

+ 860 - 0
src/api/hisStore/components/productOrder.vue

@@ -0,0 +1,860 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="order!=null" >
+          <el-steps  :active="order.status==3?order.status+1:order.status" align-center>
+            <el-step title="待支付"></el-step>
+            <el-step title="待发货"></el-step>
+            <el-step title="待收货"></el-step>
+            <el-step title="交易完成"></el-step>
+          </el-steps>
+      </div>
+      <div>
+      <el-card shadow="never" style="margin-top: 15px">
+      <div class="operate-container"  v-if="order!=null">
+        <span style="margin-left: 20px" class="color-danger">订单状态:
+           <el-tag prop="status" v-for="(item, index) in statusOptions"   v-if="order.status==item.dictValue">{{item.dictLabel}}</el-tag>
+        </span>
+        <div class="operate-button-container" >
+          <el-button size="mini" @click="editOrder()"  v-hasPermi="['store:storeOrder:edit']" >修改订单</el-button>
+        </div>
+        <div class="operate-button-container"  v-hasPermi="['store:storeOrder:finishOrder']" v-if="order.status===2">
+          <el-button size="mini" @click="finishOrder()" >确认收货</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.status==1||order.status==2"  v-hasPermi="['store:storeOrder:refundOrderMoney']"  >
+          <el-button size="mini" @click="refundOrderMoney()" >退款</el-button>
+        </div>
+        <div class="operate-button-container"  v-hasPermi="['store:storeOrder:express']"  >
+          <el-button size="mini" @click="showExpress()" >查看物流</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.tuiMoneyStatus==0"  v-hasPermi="['store:storeOrder:editTuiMoney']"  >
+          <el-button size="mini" @click="editTuiMoney1()" >解冻</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.tuiMoneyStatus==1"  v-hasPermi="['store:storeOrder:editTuiMoney']"  >
+          <el-button size="mini" @click="editTuiMoney2()" >冻结</el-button>
+        </div>
+
+        <div class="operate-button-container" v-if="order.status==3&&order.tuiMoneyStatus==null"  v-hasPermi="['store:storeOrder:addTuiMoney']"  >
+          <el-button size="mini" @click="addTuiMoney()" >分佣</el-button>
+        </div>
+
+        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
+          <el-button size="mini" @click="showErpOrder()" >查看ERP订单信息</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.isPayRemain!=null&&order.isPayRemain==1"  v-hasPermi="['store:storeOrder:auditPayRemain']"  >
+          <el-button size="mini" @click="auditPayRemain()" >尾款审核</el-button>
+        </div>
+        <div class="operate-button-container" >
+          <el-button size="mini" @click="editDelivery()"  v-hasPermi="['store:storeOrder:editDeliveryId']" >修改物流</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.status >=1 && order.extendOrderId == null && order.deliveryId == null"  v-hasPermi="['store:storeOrder:createErpOrder']"  >
+          <el-button size="mini" @click="addErpOrder()" >创建ERP订单信息</el-button>
+        </div>
+        <!-- <div class="operate-button-container" v-show="order.status===2">
+          <el-button size="mini"  >去发货</el-button>
+          <el-button size="mini" >备注订单</el-button>
+        </div>
+        <div class="operate-button-container" v-show="order.status===4">
+          <el-button size="mini"  >订单跟踪</el-button>
+          <el-button size="mini"  disabled>备注订单</el-button>
+        </div> -->
+      </div>
+      <div style="margin: 20px 0px">
+        <span class="font-small">基本信息</span>
+      </div>
+      <el-descriptions :column="4" border  >
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="order!=null">
+                  {{order.orderCode}}
+                </span>
+                <el-tag  v-for="(item, index) in createTypeOptions"    v-if="order!=null&&order.orderCreateType==item.dictValue">{{item.dictLabel}}
+                </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="会员"  >
+                <span v-if="user!=null">
+                  {{user.nickname}}({{user.phone}})
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="支付方式"  >
+              <el-tag prop="payType" v-for="(item, index) in payTypeOptions"    v-if="order!=null&&order.payType==item.dictValue">{{item.dictLabel}}
+              </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="订单类型"  >
+              <el-tag prop="orderType" v-for="(item, index) in orderTypeOptions"    v-if="order!=null&&order.orderType==item.dictValue">{{item.dictLabel}}</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流公司编号"  >
+                <span v-if="order!=null">
+                  {{order.deliverySn}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流公司名称"  >
+                <span v-if="order!=null">
+                  {{order.deliveryName}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流单号"  >
+                <span v-if="order!=null">
+                  {{order.deliveryId}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流状态"  >
+                <span v-if="order!=null">
+                  <el-tag prop="deliveryId" v-for="(item, index) in deliveryStatusOptions"    v-if="order!=null&&order.deliveryStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流跟踪状态"  >
+                <span v-if="order!=null">
+                  <el-tag prop="deliveryId" v-for="(item, index) in deliveryTypeOptions"    v-if="order!=null&&order.deliveryType==item.dictValue">{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流结算费用"  >
+                <span v-if="order!=null&&order.deliveryPayMoney!=null ">
+                  {{order.deliveryPayMoney.toFixed(2) }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递帐单日期"  >
+                <span v-if="order!=null ">
+                  {{order.deliveryTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递结算日期"  >
+                <span v-if="order!=null ">
+                  {{order.deliveryPayTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="推广佣金"  >
+                <span v-if="order!=null ">
+                  {{order.tuiMoney }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货人"  >
+                <span v-if="order!=null ">
+                  {{order.realName }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="手机号码"  >
+                <span v-if="order!=null ">
+                  {{order.userPhone }}
+                </span>
+                <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrder:queryPhone']"></el-button>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货地址"  >
+              <el-popover
+                v-if="order!=null"
+                placement="top-start"
+                title="收货地址"
+                width="300"
+                trigger="hover"
+                :content="order.userAddress">
+                <span slot="reference">{{order.userAddress}}</span>
+                <el-button icon="el-icon-search" size="mini" @click="handleAddress()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrder:queryAddress']"></el-button>
+              </el-popover>
+            </el-descriptions-item>
+            <el-descriptions-item label="档期归属"  >
+              <el-tag prop="scheduleId" v-for="(item, index) in scheduleOptions"    v-if="order!=null&&order.scheduleId==item.id">{{item.name}}
+              </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="用户备注"  >
+                <span v-if="order!=null">
+                  {{order.mark}}
+                </span>
+            </el-descriptions-item>
+      </el-descriptions>
+      <div style="margin: 20px 0px"  v-if="order!=null">
+        <span class="font-small">
+          凭证信息
+        </span>
+      </div>
+      <el-image
+          v-if="certificates != null"
+          :src="certificates"
+          :preview-src-list="[certificates]"
+          :style="{ width: '100px', height: '100px' }"
+          @click.native="showImageDialog"
+        ></el-image>
+        <el-dialog :visible.sync="dialogVisibleImage" width="10%">
+          <img :src="certificates" style="width: 100%" alt="">
+        </el-dialog>
+      <div style="margin-top: 20px">
+        <span class="font-small">商品信息</span>
+      </div>
+      <el-table
+        border
+        v-if="items!=null"
+        :data="items"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+        <el-table-column label="商品图片" width="150" align="center">
+          <template slot-scope="scope">
+            <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+          </template>
+        </el-table-column>
+        <el-table-column label="商品编码" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).barCode}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="商品组合编码" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).groupBarCode}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="商品名称" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="单价" width="240" align="center">
+          <template slot-scope="scope">
+            <p>¥{{JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="规格" width="240" align="center">
+          <template slot-scope="scope">
+            {{JSON.parse(scope.row.jsonInfo).sku}}
+          </template>
+        </el-table-column>
+        <el-table-column label="数量" width="180" align="center">
+          <template slot-scope="scope">
+            {{scope.row.num}}
+          </template>
+        </el-table-column>
+        <el-table-column label="处方药" width="240" align="center">
+          <template slot-scope="scope">
+            {{scope.row.isPrescribe!=null&&scope.row.isPrescribe==1?'是':'否'}}
+          </template>
+        </el-table-column>
+        <el-table-column label="小计"  align="center">
+          <template slot-scope="scope" >
+            ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="float: right;margin: 20px" v-if="order!=null">
+        合计:<span class="color-danger">¥{{order.totalPrice.toFixed(2)}}</span>
+      </div>
+      <div style="margin: 60px 0px 20px 0px">
+        <span class="font-small">费用信息</span>
+      </div>
+      <el-descriptions   :column="4" border  >
+          <el-descriptions-item label="商品合计"  >
+              <span v-if="order!=null">
+                ¥{{order.totalPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="应付金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="运费"  >
+              <span v-if="order!=null">
+                ¥{{order.payPostage.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="优惠券"  >
+              <span v-if="order!=null">
+                ¥{{order.couponPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="积分抵扣"  >
+              <span v-if="order!=null">
+                ¥{{order.deductionPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="实付金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payMoney.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="代收金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payDelivery.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+      </el-descriptions>
+
+      <div style="margin-top: 20px">
+        <span class="font-small">支付信息</span>
+      </div>
+      <el-table
+        border
+        :data="payments"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+          <el-table-column label="支付单号" align="center" prop="payCode" width="120px" />
+          <el-table-column label="支付金额" align="center" prop="payMoney" />
+          <el-table-column label="类型" align="center" prop="payTypeCode" />
+          <el-table-column label="交易单号" align="center" prop="bankTransactionId" />
+          <el-table-column label="银行单号" align="center" prop="bankSerialNo" />
+          <el-table-column label="创建时间" align="center" prop="createTime" />
+          <el-table-column label="支付时间" align="center" prop="payTime" />
+      </el-table>
+
+
+      <div style="margin-top: 20px">
+        <span class="font-small">操作信息</span>
+      </div>
+      <el-table style="margin-top: 20px;width: 100%"
+                ref="orderHistoryTable"
+                :data="logs" border>
+        <el-table-column label="操作时间"  width="160" align="center">
+          <template slot-scope="scope">
+            {{scope.row.changeTime}}
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" align="center">
+          <template slot-scope="scope">
+            {{scope.row.changeMessage}}
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div style="margin-top: 20px">
+        <!-- <svg-icon icon-class="marker" style="color: #606266"></svg-icon> -->
+        <span class="font-small">分佣信息</span>
+      </div>
+      <el-table
+        border
+        :data="tuiMoneyLogs"
+        size="small"
+                style="width: 100%;margin-top: 20px" >
+          <el-table-column label="公司名称" align="center" prop="companyName" width="120px" />
+          <el-table-column label="金额" align="center" prop="money" />
+          <el-table-column label="余额" align="center" prop="balance" />
+          <el-table-column label="创建时间" align="center" prop="createTime" />
+          <el-table-column label="备注" align="center" prop="remark" />
+      </el-table>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">审批信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  :data="auditLogs" border>
+          <el-table-column label="操作时间"  width="160" align="center">
+            <template slot-scope="scope">
+              {{scope.row.createTime}}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{scope.row.content}}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+    </div>
+
+    <el-dialog :title="edit.title" :visible.sync="edit.open" width="600px" append-to-body>
+      <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
+        <el-form-item label="订单类型" prop="orderType"  >
+            <el-select style="width: 200px" v-model="editForm.orderType" placeholder="请选择订单类型" clearable size="small" >
+              <el-option
+                      v-for="item in orderTypeOptions"
+                      :key="item.dictValue"
+                      :label="item.dictLabel"
+                      :value="item.dictValue"
+                    />
+            </el-select>
+        </el-form-item>
+       <el-form-item label="状态" prop="status" >
+           <el-select style="width:220px" v-model="editForm.status" placeholder="请选择状态" clearable size="small">
+            <el-option key="0"  label="待支付" value="0" />
+            <el-option key="1"  label="待发货" value="1" />
+             <el-option key="2"  label="待收货" value="2" />
+             <el-option key="3"  label="交易成功" value="3" />
+             <el-option key="-1"  label="退款中" value="-1" />
+             <el-option key="-2"  label="已退款" value="-2" />
+             <el-option key="-3"  label="已取消" value="-3" />
+           </el-select>
+         </el-form-item>
+         <el-form-item label="档期归属" prop="scheduleId"  >
+            <el-select filterable style="width: 200px" v-model="editForm.scheduleId" placeholder="请选择档期" clearable size="small" >
+              <el-option
+                      v-for="item in scheduleOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+            </el-select>
+        </el-form-item>
+         <el-form-item label="详情地址" prop="userAddress"  >
+          <el-input v-model="editForm.userAddress" placeholder="请输入" />
+        </el-form-item>
+        <!-- <el-form-item label="erp单号" prop="extendOrderId"  >
+          <el-input v-model="editForm.extendOrderId" placeholder="请输入" />
+        </el-form-item> -->
+        <el-form-item label="备注" prop="mark"  >
+          <el-input v-model="editForm.mark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditForm">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="editDy.title" :visible.sync="editDy.open" width="600px" append-to-body>
+      <el-form ref="editDyForm" :model="editDyForm" :rules="editDyRules" label-width="120px">
+      <div  v-hasPermi="['store:storeOrder:updateErpOrder']"  style="margin-bottom: 20px;" >
+        <el-button size="mini" @click="updateErpOrder" >同步物流单号信息</el-button>
+      </div>
+        <el-form-item label="物流公司" prop="deliverySn" >
+           <el-select style="width:220px" v-model="editDyForm.deliverySn" placeholder="请选择" clearable size="small">
+            <el-option key="SF"  label="顺丰" value="SF" />
+            <el-option key="EMS"  label="邮政" value="EMS" />
+             <el-option key="ZTO"  label="中通" value="ZTO" />
+             <el-option key="JD"  label="京东" value="JD" />
+             <el-option key="DBL"  label="德邦" value="DBL" />
+           </el-select>
+         </el-form-item>
+        <el-form-item label="物流单号" prop="deliveryId"  >
+          <el-input v-model="editDyForm.deliveryId" placeholder="请输入物流单号" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditDyForm">确 定</el-button>
+        <el-button @click="editDy.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
+      <div  v-hasPermi="['store:storeOrder:syncExpress']"  >
+        <el-button size="mini" @click="syncExpress()" >同步快递鸟物流状态</el-button>
+      </div>
+      <el-table style="margin-top: 20px;width: 100%"
+                ref="orderHistoryTable"
+                :data="traces" border>
+        <el-table-column label="操作时间"  width="160" align="center">
+          <template slot-scope="scope">
+            {{scope.row.AcceptTime}}
+          </template>
+        </el-table-column>
+         <el-table-column label="位置" align="center">
+          <template slot-scope="scope">
+            {{scope.row.Location}}
+          </template>
+        </el-table-column>
+        <el-table-column label="描述" align="center">
+          <template slot-scope="scope">
+            {{scope.row.AcceptStation}}
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+
+    <el-dialog :title="erpDialog.title" :visible.sync="erpDialog.open" width="600px" append-to-body>
+      <div v-if="order!=null&&order.extendOrderId!=null&&order.status==1"  v-hasPermi="['store:storeOrder:updateExpress']"  >
+        <el-button size="mini" @click="updateExpress()" >同步物流发货</el-button>
+      </div>
+      <div class="table-layout"  v-if="erpOrder!=null">
+        <el-row>
+          <el-col :span="6" class="table-cell-title">订单编号</el-col>
+          <el-col :span="6" class="table-cell-title">是否代收</el-col>
+          <el-col :span="6" class="table-cell-title">快递编号</el-col>
+          <el-col :span="6" class="table-cell-title">快递名称</el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.code}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.cod?'是':'否'}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.express_code}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.express_name}}
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell-title">收货人</el-col>
+          <el-col :span="6" class="table-cell-title">电话</el-col>
+          <el-col :span="6" class="table-cell-title">地址</el-col>
+          <el-col :span="6" class="table-cell-title">运单号</el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_name}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_mobile}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_address}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.deliverys!=null&&erpOrder.deliverys.length>0?erpOrder.deliverys[0].mail_no:''}}
+          </el-col>
+
+        </el-row>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {auditPayRemain,addTuiMoney,syncExpress,updateExpress,getEroOrder,refundOrderMoney, editTuiMoney,getExpress,finishOrder,listStoreOrder, getStoreOrder, delStoreOrder, addStoreOrder, updateStoreOrder, exportStoreOrder,updateDeliveryId, createErpOrder,updateErp,getStoreOrderAddress,getStoreOrderPhone} from "@/api/store/storeOrder";
+import { getTcmScheduleList } from "@/api/company/schedule";
+export default {
+  name: "order",
+  data() {
+    return {
+      dialogVisibleImage: false,
+      createTypeOptions:[],
+      deliveryStatusOptions:[],
+      deliveryTypeOptions:[],
+      scheduleOptions:[],
+      schedules:[],
+      orderId:null,
+      erpDialog:{
+        title:"ERP订单信息",
+        open:false,
+      },
+      expressDialog:{
+        title:"物流信息",
+        open:false,
+      },
+      edit:{
+        title:"",
+        open:false,
+      },
+      editDy:{
+        title:"修改物流单号",
+        open:false,
+      },
+      editDyForm:{
+        deliverySn:null,
+        deliveryId:null,
+      },
+      editForm:{
+        orderType:null,
+        status:null,
+        userAddress:null,
+        // extendOrderId:null,
+        scheduleId:null,
+        mark:"",
+      },
+
+      editDyRules:{
+        deliverySn: [
+          { required: true, message: "物流公司不能为空", trigger: "blur" }
+        ],
+        deliveryId: [
+          { required: true, message: "物流单号不能为空", trigger: "blur" }
+        ],
+      },
+      editRules:{
+        userAddress: [
+          { required: true, message: "收货地址不能为空", trigger: "blur" }
+        ],
+
+      },
+      orderTypeOptions:[],
+      payTypeOptions:[],
+      statusOptions:[],
+      certificates:null,
+      orderStatus:null,
+      order:null,
+      user:{},
+      logs:[],
+      items:[],
+      express:null,
+      traces:[],
+      payments:[],
+      tuiMoneyLogs:[],
+      erpOrder:null,
+      auditLogs: [],
+    };
+  },
+  created() {
+    this.getDicts("store_order_delivery_status").then((response) => {
+      this.deliveryStatusOptions = response.data;
+    });
+    this.getDicts("store_order_delivery_type").then((response) => {
+      this.deliveryTypeOptions = response.data;
+    });
+
+    this.getDicts("store_order_type").then((response) => {
+      this.orderTypeOptions = response.data;
+    });
+    this.getDicts("store_order_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("store_pay_type").then((response) => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("store_order_create_type").then((response) => {
+      this.createTypeOptions = response.data;
+    });
+    getTcmScheduleList().then(response => {
+      this.scheduleOptions = response.data;
+    });
+  },
+  methods: {
+    handleAddress(){
+        const id = this.order.id;
+        getStoreOrderAddress(id).then(response =>{
+            this.order.userAddress = response.address;
+        })
+      },
+      handlePhone(){
+        const id = this.order.id;
+        getStoreOrderPhone(id).then(response =>{
+            this.order.userPhone = response.userPhone;
+        })
+      },
+    showImageDialog() {
+      this.dialogVisible = true;
+    },
+    syncExpress(){
+      var that=this;
+        this.$confirm('确定同步物流状态吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return syncExpress(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    updateErpOrder(){
+      var that=this;
+        this.$confirm('确定同步物流单号信息吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return updateErp(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+          this.editDy.open = false
+        }).catch(function() {});
+    },
+    updateExpress(){
+      var that=this;
+        this.$confirm('确定同步物流信息吗,同步后将自动发货', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return updateExpress(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    showErpOrder(){
+      this.erpDialog.open=true;
+      var data={extendOrderId:this.order.extendOrderId};
+      getEroOrder(data).then(response => {
+          this.erp = response.data;
+          if(response.data.orders!=null&&response.data.orders.length==1){
+            this.erpOrder=response.data.orders[0]
+          }
+          console.log(this.erpOrder)
+
+      });
+    },
+    showExpress(){
+      this.expressDialog.open=true;
+      getExpress(this.orderId).then(response => {
+          this.express = response.data;
+          if(this.express!=null&&this.express.Traces!=null){
+              this.traces=this.express.Traces
+          }
+
+      });
+
+    },
+    submitEditForm(){
+        this.$refs["editForm"].validate(valid => {
+        if (valid) {
+          updateStoreOrder(this.editForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.edit.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+
+        }
+      });
+    },
+    submitEditDyForm(){
+        this.$refs["editDyForm"].validate(valid => {
+        if (valid) {
+          updateDeliveryId(this.editDyForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.editDy.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+
+        }
+      });
+    },
+    editTuiMoney1(){
+      var that=this;
+        this.$confirm('是否冻结此订单推广佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return editTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editTuiMoney2(){
+      var that=this;
+        this.$confirm('是否解冻此订单推广佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return editTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    addTuiMoney(){
+      var that=this;
+        this.$confirm('确定手动分佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return addTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    refundOrderMoney(){
+        var that=this;
+        this.$confirm('确认退款吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return refundOrderMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    finishOrder(){
+        var that=this;
+        this.$confirm('是否确认客户已收货?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return finishOrder(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    auditPayRemain(){
+        var that=this;
+        this.$confirm('是否确认已收尾款?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return auditPayRemain(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editOrder(){
+        this.edit.open=true;
+        this.editForm.id=this.order.id;
+        this.editForm.mark=this.order.mark
+        this.editForm.orderType=this.order.orderType.toString();
+        this.editForm.status = this.order.status.toString();
+        this.editForm.userAddress = this.order.userAddress.toString();
+        this.editForm.scheduleId = this.order.scheduleId;
+        // this.editForm.extendOrderId = this.order.extendOrderId.toString();
+
+    },
+    //推送管易按钮
+    addErpOrder(){
+        var that=this;
+        this.$confirm('是否确认推送erp?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderCode:that.order.orderCode}
+          return createErpOrder(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editDelivery(){
+      this.editDy.open = true;
+      this.editDyForm.id = this.order.id;
+      this.editDyForm.deliveryId = this.order.deliveryId;
+      this.editDyForm.deliverySn = this.order.deliverySn;
+    },
+    getOrder(orderId){
+        this.orderId=orderId;
+        this.certificates = null;
+        getStoreOrder(orderId).then(response => {
+            this.order = response.order;
+            if(response.order.certificates != null){
+              this.certificates = response.order.certificates;
+            }
+            if(response.order.status != null){
+              this.orderStatus = response.order.status;
+            }
+            this.user = response.user;
+            this.logs = response.logs;
+            this.items = response.items;
+            this.payments=response.payments;
+            this.tuiMoneyLogs=response.tuiMoneyLogs;
+            this.auditLogs = response.auditLogs;
+        });
+     }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+</style>

+ 102 - 0
src/api/hisStore/components/productSelect.vue

@@ -0,0 +1,102 @@
+<template>
+  <div class="product-select" >
+    <el-form   :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="商品名称" prop="productName">
+        <el-input
+          style="width:200px"
+          v-model="queryParams.productName"
+          placeholder="请输入商品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table border v-loading="loading" :data="list">
+      <el-table-column label="商品ID" align="center" prop="productId" />
+      <el-table-column label="商品图片" align="center" width="100">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.image" width="80">
+            <img :src="scope.row.image" style="max-width: 80px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+      <el-table-column label="单价" align="center" prop="price" />
+      <el-table-column label="操作" align="center" width="100px" >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleSelect(scope.row)"
+          >选择</el-button>
+        </template>
+      </el-table-column>
+    </el-table> 
+    <pagination
+      style="padding-bottom:10px;"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { listStoreProduct } from "@/api/store/storeProduct";
+export default {
+  name: "selectProduct",
+  data() {
+    return {
+      loading: true,
+      list:[],
+      total: 0,
+      queryParams: {
+        productName:"",
+        pageNum: 1,
+        pageSize: 10,
+        isPackage:0,
+      }
+    };
+  },
+  created() {
+     this.getList();
+  },
+  methods: {
+    getData(){
+      this.getList();
+    },
+    handleSelect(row){
+      this.$emit('selectProduct',row);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    getList(){
+      this.loading = true;
+      listStoreProduct(this.queryParams).then(response => {
+        this.list = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    }
+  }
+};
+</script>
+<style scoped>
+.product-select{
+  padding-bottom: 15px;
+}
+</style>

+ 111 - 0
src/api/hisStore/components/testReportDetails.vue

@@ -0,0 +1,111 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         测试报告详情
+      </div>
+  <div class="contentx" v-if="item!=null">
+        <div class="desct"> 测试报告信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="报告编号"><span v-if="item!=null">{{item.reportSn}}</span></el-descriptions-item>
+          <el-descriptions-item label="用户昵称"><span v-if="item!=null">{{item.nickName}}</span></el-descriptions-item>
+          <el-descriptions-item label="用户电话"><span v-if="item!=null">{{item.phone}}</span></el-descriptions-item>
+          <el-descriptions-item label="诊断结果"><span v-if="item!=null">{{item.testResult}}</span></el-descriptions-item>
+          <el-descriptions-item label="分数"><span v-if="item!=null">{{item.score}}</span></el-descriptions-item>
+          <el-descriptions-item label="模板"><span v-if="item!=null">{{item.name}}</span></el-descriptions-item>
+          <el-descriptions-item label="备注"><span v-if="item!=null">{{item.remark}}</span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="patientJson!=null">
+        <div class="desct" > 患者信息</div>
+        <el-descriptions title="" :column="3" border >
+            <el-descriptions-item label="患者名称"><span >{{patientJson.name}}</span></el-descriptions-item>
+            <el-descriptions-item label="患者性别">
+              <dict-tag :options="sexOptions" :value="patientJson.sex"/>
+        </el-descriptions-item>
+            <el-descriptions-item label="患者年龄"><span >{{patientJson.age}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="conditioningPlanJson!=null">
+        <div class="desct"> 调理方案</div>
+        <el-descriptions title="" :column="1" border >
+            <el-descriptions-item :label="form.name" v-for=" form in conditioningPlanJson" ><span >{{form.value}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="formJson!=null">
+        <div class="desct"> 表单信息</div>
+        <el-descriptions title="" :column="3" border >
+            <el-descriptions-item :label="form.title" v-for=" form in formJson" ><span >{{form.option}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+</div>
+</template>
+
+<script>
+import { listTestReport, getTestReport, delTestReport, addTestReport, updateTestReport, exportTestReport } from "@/api/store/testReport";
+  export default {
+    name: "testReport",
+    props:["data"],
+    data() {
+      return {
+        item:null,
+        formJson:null,
+        conditioningPlanJson:null,
+        patientJson:null,
+        sexOptions:[],
+      }
+    },
+    created() {
+      this.getDicts("sys_patient_sex").then(response => {
+         this.sexOptions = response.data;
+       });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        this.conditioningPlanJson=null;
+        this.formJson=null;
+        this.patientJson=null;
+        getTestReport(orderId).then(response => {
+            this.item = response.data;
+            if(response.data){
+              if(response.data.formJson!=null){
+                this.formJson=JSON.parse(response.data.formJson);
+                console.log(this.formJson)
+              }
+              if(response.data.conditioningPlanJson!=null){
+                this.conditioningPlanJson=JSON.parse(response.data.conditioningPlanJson)
+              }
+              if(response.data.patientJson!=null){
+                this.patientJson=JSON.parse(response.data.patientJson)
+              }
+            }
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 500px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 108 - 0
src/api/hisStore/components/testTempDetails.vue

@@ -0,0 +1,108 @@
+<template>
+
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      测一测模板详情
+    </div>
+
+<div class="content" v-if="item!=null">
+    <div class="desct">
+      测一测模板信息
+    </div>
+    <el-descriptions title="" :column="3" border>
+    <el-descriptions-item label="名称" >
+        <span v-if="item!=null">{{item.name}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="模板编号" >
+        <span v-if="item!=null">{{item.tempCode}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="状态" >
+         <dict-tag :options="statusOptions" :value="item.status"/>
+    </el-descriptions-item>
+
+    <el-descriptions-item label="创建时间" >
+        <span v-if="item!=null">{{item.createTime}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="修改时间" >
+        <span v-if="item!=null">{{item.updateTime}}</span>
+    </el-descriptions-item>
+    </el-descriptions>
+  </div>
+<div class="content" v-for="mb in itemTypeJson">
+    <div class="desct">
+      {{mb.itemType}}
+    </div>
+    <el-table :data="mb.item" :cell-style="{ textAlign: 'center' }" :header-cell-style="{textAlign: 'center'}" border>
+      <el-table-column label="名称" prop="name" width="200px">
+        <template slot-scope="scope">
+          {{ scope.row.name }}
+        </template>
+      </el-table-column>
+      <el-table-column label="内容" prop="value" >
+        <template slot-scope="scope">
+          <div style="white-space: pre-wrap;">
+            {{ scope.row.value }}
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+      </div>
+</template>
+
+<script>
+import { listTestTemp, getTestTemp, delTestTemp, addTestTemp, updateTestTemp, exportTestTemp } from "@/api/store/testTemp";
+  export default {
+    name: "testTempDetails",
+    props:["data"],
+    data() {
+      return {
+       // 状态字典
+       statusOptions: [],
+       itemTypeJson:[],
+        item:null,
+      }
+    },
+    created() {
+    this.getDicts("sys_company_status").then(response => {
+      this.statusOptions = response.data;
+    });
+
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getTestTemp(orderId).then(response => {
+              this.item = response.data;
+              this.itemTypeJson=  JSON.parse(this.item.itemTypeJson)
+          });
+      },
+
+    }
+  }
+</script>
+<style>
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+     padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>
+
+

+ 116 - 0
src/api/hisStore/components/testTempItemDetails.vue

@@ -0,0 +1,116 @@
+<template>
+
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      测一测模板项目详情
+    </div>
+
+<div class="content" v-if="item!=null">
+    <div class="desct">
+      测一测模板项目信息
+    </div>
+    <el-descriptions title="" :column="3" border>
+    <el-descriptions-item label="标题" >
+        <span v-if="item!=null">{{item.title}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="模板名称" >
+        <span v-if="item!=null">{{name}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="项目类型" >
+         <dict-tag :options="itemTypeOptions" :value="item.tempId"/>
+    </el-descriptions-item>
+    <el-descriptions-item label="排序" >
+        <span v-if="item!=null">{{item.sort}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="创建时间" >
+        <span v-if="item!=null">{{item.createTime}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="修改时间" >
+        <span v-if="item!=null">{{item.updateTime}}</span>
+    </el-descriptions-item>
+        </el-descriptions>
+            </div>
+            <div class="content" v-if="item!=null">
+<div class="desct">
+  详情
+</div>
+
+  <el-table :data="scoreJson" :cell-style="{ textAlign: 'center' }" :header-cell-style="{textAlign: 'center'}" border>
+    <el-table-column label="标题" prop="name" >
+      <template slot-scope="scope">
+        {{ scope.row.name }}
+      </template>
+    </el-table-column>
+    <el-table-column label="分值" prop="score" >
+      <template slot-scope="scope">
+        {{ scope.row.score }}
+      </template>
+    </el-table-column>
+  </el-table>
+
+
+      </div>
+
+      </div>
+</template>
+
+<script>
+import { listTestTempItem, getTestTempItem, delTestTempItem, addTestTempItem, updateTestTempItem, exportTestTempItem } from "@/api/store/testTempItem";
+import { getAllTestTemp } from "@/api/store/testTemp";
+  export default {
+    name: "patientdetails",
+    props:["data"],
+    data() {
+      return {
+       // 状态字典
+       itemTypeOptions: [],
+        item:null,
+        scoreJson:[],
+        TempList:[],
+        name:null,
+      }
+    },
+    created() {
+     this.getDicts("test_temp_item_type").then(response => {
+       this.itemTypeOptions = response.data;
+     });
+
+    },
+    methods: {
+
+      getDetails(orderId,name) {
+          this.name=name;
+          this.item=null;
+          getTestTempItem(orderId).then(response => {
+              this.item = response.data;
+              this.scoreJson=JSON.parse(response.data.scoreJson);
+          });
+      },
+
+    }
+  }
+</script>
+<style>
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+     padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>
+
+

+ 80 - 0
src/api/hisStore/components/vesselDetails.vue

@@ -0,0 +1,80 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         筋络详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 筋络信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="图片" >
+            <el-image
+                    style="width: 100px"
+                    :src="item.imgUrl"
+                    :preview-src-list="[item.imgUrl]">
+            </el-image>
+          </el-descriptions-item>
+          <el-descriptions-item label="请输入筋络穴位名称"><span v-if="item!=null">{{item.vesselName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+           <el-descriptions-item label="经络"><span v-if="item!=null">{{item.vessel}}</span></el-descriptions-item>
+          <el-descriptions-item label="部位"><span v-if="item!=null">{{item.region}}</span></el-descriptions-item>
+
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+          <el-descriptions-item label="描述"><span  v-if="item!=null" v-html="item.descs" ></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listVessel, getVessel, delVessel, addVessel, updateVessel, exportVessel } from "@/api/store/vessel";
+  export default {
+    name: "getVessel",
+    data() {
+      return {
+        item:null,
+        // 状态字典
+        statusOptions: [],
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getVessel(orderId).then(response => {
+            this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 53 - 0
src/api/hisStore/department.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询科室列表
+export function listDepartment(query) {
+  return request({
+    url: '/his/department/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询科室详细
+export function getDepartment(deptId) {
+  return request({
+    url: '/his/department/' + deptId,
+    method: 'get'
+  })
+}
+
+// 新增科室
+export function addDepartment(data) {
+  return request({
+    url: '/his/department',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改科室
+export function updateDepartment(data) {
+  return request({
+    url: '/his/department',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除科室
+export function delDepartment(deptId) {
+  return request({
+    url: '/his/department/' + deptId,
+    method: 'delete'
+  })
+}
+
+// 导出科室
+export function exportDepartment(query) {
+  return request({
+    url: '/his/department/export',
+    method: 'get',
+    params: query
+  })
+}

+ 60 - 0
src/api/hisStore/disease.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询疾病列表
+export function listDisease(query) {
+  return request({
+    url: '/his/disease/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询疾病详细
+export function getDisease(diseaseId) {
+  return request({
+    url: '/his/disease/' + diseaseId,
+    method: 'get'
+  })
+}
+// 查询科室列表
+export function listDepartment(query) {
+  return request({
+    url: '/his/department/listOptions',
+    method: 'get',
+    params: query
+  })
+}
+// 新增疾病
+export function addDisease(data) {
+  return request({
+    url: '/his/disease',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改疾病
+export function updateDisease(data) {
+  return request({
+    url: '/his/disease',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除疾病
+export function delDisease(diseaseId) {
+  return request({
+    url: '/his/disease/' + diseaseId,
+    method: 'delete'
+  })
+}
+
+// 导出疾病
+export function exportDisease(query) {
+  return request({
+    url: '/his/disease/export',
+    method: 'get',
+    params: query
+  })
+}

+ 62 - 0
src/api/hisStore/doctorArticle.js

@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+
+// 查询医生文章列表
+export function listArticle(query) {
+  return request({
+    url: '/his/doctorArticle/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询医生名称列表
+export function listdocuser(query) {
+  return request({
+    url: '/his/doctor/userdoc/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询医生文章详细
+export function getArticle(articleId) {
+  return request({
+    url: '/his/doctorArticle/' + articleId,
+    method: 'get'
+  })
+}
+
+// 新增医生文章
+export function addArticle(data) {
+  return request({
+    url: '/his/doctorArticle',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改医生文章
+export function updateArticle(data) {
+  return request({
+    url: '/his/doctorArticle',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除医生文章
+export function delArticle(articleId) {
+  return request({
+    url: '/his/doctorArticle/' + articleId,
+    method: 'delete'
+  })
+}
+
+// 导出医生文章
+export function exportArticle(query) {
+  return request({
+    url: '/his/doctorArticle/export',
+    method: 'get',
+    params: query
+  })
+}

+ 59 - 0
src/api/hisStore/famousPrescribe.js

@@ -0,0 +1,59 @@
+import request from '@/utils/request'
+
+// 查询经典名方列表
+export function listFamousPrescribe(query) {
+  return request({
+    url: '/his/famousPrescribe/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询经典名方详细
+export function getFamousPrescribe(id) {
+  return request({
+    url: '/his/famousPrescribe/' + id,
+    method: 'get'
+  })
+}
+// 下载导入模板
+export function importTemplate() {
+  return request({
+    url: '/his/chineseMedicine/importTemplate',
+    method: 'get'
+  })
+}
+// 新增经典名方
+export function addFamousPrescribe(data) {
+  return request({
+    url: '/his/famousPrescribe',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改经典名方
+export function updateFamousPrescribe(data) {
+  return request({
+    url: '/his/famousPrescribe',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除经典名方
+export function delFamousPrescribe(id) {
+  return request({
+    url: '/his/famousPrescribe/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出经典名方
+export function exportFamousPrescribe(query) {
+  return request({
+    url: '/his/famousPrescribe/export',
+    method: 'get',
+    params: query
+  })
+}

+ 60 - 0
src/api/hisStore/illnessLibrary.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询中医疾病列表
+export function listillnessLibrary(query) {
+  return request({
+    url: '/his/illnessLibrary/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询中医疾病详细
+export function getillnessLibrary(illnessId) {
+  return request({
+    url: '/his/illnessLibrary/' + illnessId,
+    method: 'get'
+  })
+}
+export function getIllness(query) {
+  return request({
+    url: '/his/illnessLibrary/getIllness/',
+    method: 'get',
+    params: query
+  })
+}
+
+// 新增中医疾病
+export function addillnessLibrary(data) {
+  return request({
+    url: '/his/illnessLibrary',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改中医疾病
+export function updateillnessLibrary(data) {
+  return request({
+    url: '/his/illnessLibrary',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除中医疾病
+export function delillnessLibrary(illnessId) {
+  return request({
+    url: '/his/illnessLibrary/' + illnessId,
+    method: 'delete'
+  })
+}
+
+// 导出中医疾病
+export function exportillnessLibrary(query) {
+  return request({
+    url: '/his/illnessLibrary/export',
+    method: 'get',
+    params: query
+  })
+}

+ 58 - 0
src/api/hisStore/integralGoods.js

@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+
+// 查询积分商品列表
+export function listIntegralGoods(query) {
+  return request({
+    url: '/his/integralGoods/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询积分商品详细
+export function getIntegralGoods(goodsId) {
+  return request({
+    url: '/his/integralGoods/' + goodsId,
+    method: 'get'
+  })
+}
+export function importTemplate() {
+  return request({
+    url: '/his/integralGoods/importTemplate',
+    method: 'get'
+  })
+}
+// 新增积分商品
+export function addIntegralGoods(data) {
+  return request({
+    url: '/his/integralGoods',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改积分商品
+export function updateIntegralGoods(data) {
+  return request({
+    url: '/his/integralGoods',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除积分商品
+export function delIntegralGoods(goodsId) {
+  return request({
+    url: '/his/integralGoods/' + goodsId,
+    method: 'delete'
+  })
+}
+
+// 导出积分商品
+export function exportIntegralGoods(query) {
+  return request({
+    url: '/his/integralGoods/export',
+    method: 'get',
+    params: query
+  })
+}

+ 80 - 0
src/api/hisStore/integralOrder.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+
+// 查询积分商品订单列表
+export function listIntegralOrder(query) {
+  return request({
+    url: '/his/integralOrder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询积分商品订单详细
+export function getIntegralOrder(orderId) {
+  return request({
+    url: '/his/integralOrder/' + orderId,
+    method: 'get'
+  })
+}
+export function getExpress(orderId) {
+  return request({
+    url: '/his/integralOrder/getExpress/' + orderId,
+    method: 'get'
+  })
+}
+export function importTemplate() {
+  return request({
+    url: '/his/integralOrder/importTemplate',
+    method: 'get'
+  })
+}
+export function sendgoods(data) {
+  return request({
+    url: '/his/integralOrder/sendGoods',
+    method: 'put',
+    data: data
+  })
+}
+// 新增积分商品订单
+export function addIntegralOrder(data) {
+  return request({
+    url: '/his/integralOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改积分商品订单
+export function updateIntegralOrder(data) {
+  return request({
+    url: '/his/integralOrder',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除积分商品订单
+export function delIntegralOrder(orderId) {
+  return request({
+    url: '/his/integralOrder/' + orderId,
+    method: 'delete'
+  })
+}
+
+// 导出积分商品订单
+export function exportIntegralOrder(query) {
+  return request({
+    url: '/his/integralOrder/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 查询收货人电话
+export function getOrderUserPhone(orderId) {
+  return request({
+    url: '/his/integralOrder/queryPhone/' + orderId,
+    method: 'get'
+  })
+}

+ 60 - 0
src/api/hisStore/medicatedFood.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询药膳食疗列表
+export function listMedicatedFood(query) {
+  return request({
+    url: '/his/medicatedFood/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 下载导入模板
+export function importTemplate() {
+  return request({
+    url: '/his/medicatedFood/importTemplate',
+    method: 'get'
+  })
+}
+// 查询药膳食疗详细
+export function getMedicatedFood(id) {
+  return request({
+    url: '/his/medicatedFood/' + id,
+    method: 'get'
+  })
+}
+
+// 新增药膳食疗
+export function addMedicatedFood(data) {
+  return request({
+    url: '/his/medicatedFood',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改药膳食疗
+export function updateMedicatedFood(data) {
+  return request({
+    url: '/his/medicatedFood',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除药膳食疗
+export function delMedicatedFood(id) {
+  return request({
+    url: '/his/medicatedFood/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出药膳食疗
+export function exportMedicatedFood(query) {
+  return request({
+    url: '/his/medicatedFood/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/prescribe.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询处方列表
+export function listPrescribe(query) {
+  return request({
+    url: '/store/prescribe/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询处方详细
+export function getPrescribe(prescribeId) {
+  return request({
+    url: '/store/prescribe/' + prescribeId,
+    method: 'get'
+  })
+}
+
+// 新增处方
+export function addPrescribe(data) {
+  return request({
+    url: '/store/prescribe',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改处方
+export function updatePrescribe(data) {
+  return request({
+    url: '/store/prescribe',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除处方
+export function delPrescribe(prescribeId) {
+  return request({
+    url: '/store/prescribe/' + prescribeId,
+    method: 'delete'
+  })
+}
+
+// 导出处方
+export function exportPrescribe(query) {
+  return request({
+    url: '/store/prescribe/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/prescribeDrug.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询处方药品列表
+export function listPrescribeDrug(query) {
+  return request({
+    url: '/store/prescribeDrug/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询处方药品详细
+export function getPrescribeDrug(drugId) {
+  return request({
+    url: '/store/prescribeDrug/' + drugId,
+    method: 'get'
+  })
+}
+
+// 新增处方药品
+export function addPrescribeDrug(data) {
+  return request({
+    url: '/store/prescribeDrug',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改处方药品
+export function updatePrescribeDrug(data) {
+  return request({
+    url: '/store/prescribeDrug',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除处方药品
+export function delPrescribeDrug(drugId) {
+  return request({
+    url: '/store/prescribeDrug/' + drugId,
+    method: 'delete'
+  })
+}
+
+// 导出处方药品
+export function exportPrescribeDrug(query) {
+  return request({
+    url: '/store/prescribeDrug/export',
+    method: 'get',
+    params: query
+  })
+}

+ 59 - 0
src/api/hisStore/shippingTemplates.js

@@ -0,0 +1,59 @@
+import request from '@/utils/request'
+
+// 查询运费模板列表
+export function listShippingTemplates(query) {
+  return request({
+    url: '/store/shippingTemplates/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询运费模板详细
+export function getShippingTemplates(shippingId) {
+  return request({
+    url: '/store/shippingTemplates/' + shippingId,
+    method: 'get'
+  })
+}
+
+// 新增运费模板
+export function addShippingTemplates(data) {
+  return request({
+    url: '/store/shippingTemplates',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改运费模板
+export function updateShippingTemplates(data) {
+  return request({
+    url: '/store/shippingTemplates',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除运费模板
+export function delShippingTemplates(shippingId) {
+  return request({
+    url: '/store/shippingTemplates/' + shippingId,
+    method: 'delete'
+  })
+}
+
+// 导出运费模板
+export function exportShippingTemplates(query) {
+  return request({
+    url: '/store/shippingTemplates/export',
+    method: 'get',
+    params: query
+  })
+}
+export function getAllShippingTemplates() {
+  return request({
+    url: '/store/shippingTemplates/getAllList',
+    method: 'get'
+  })
+}

+ 53 - 0
src/api/hisStore/storeActivity.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询活动列表
+export function listStoreActivity(query) {
+  return request({
+    url: '/store/storeActivity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询活动详细
+export function getStoreActivity(activityId) {
+  return request({
+    url: '/store/storeActivity/' + activityId,
+    method: 'get'
+  })
+}
+
+// 新增活动
+export function addStoreActivity(data) {
+  return request({
+    url: '/store/storeActivity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改活动
+export function updateStoreActivity(data) {
+  return request({
+    url: '/store/storeActivity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除活动
+export function delStoreActivity(activityId) {
+  return request({
+    url: '/store/storeActivity/' + activityId,
+    method: 'delete'
+  })
+}
+
+// 导出活动
+export function exportStoreActivity(query) {
+  return request({
+    url: '/store/storeActivity/export',
+    method: 'get',
+    params: query
+  })
+}

+ 87 - 0
src/api/hisStore/storeAfterSales.js

@@ -0,0 +1,87 @@
+import request from '@/utils/request'
+
+// 查询售后记录列表
+export function listStoreAfterSales(query) {
+  return request({
+    url: '/store/storeAfterSales/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询售后记录详细
+export function getStoreAfterSales(id) {
+  return request({
+    url: '/store/storeAfterSales/' + id,
+    method: 'get'
+  })
+}
+
+// 新增售后记录
+export function addStoreAfterSales(data) {
+  return request({
+    url: '/store/storeAfterSales',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改售后记录
+export function updateStoreAfterSales(data) {
+  return request({
+    url: '/store/storeAfterSales',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除售后记录
+export function delStoreAfterSales(id) {
+  return request({
+    url: '/store/storeAfterSales/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出售后记录
+export function exportStoreAfterSales(query) {
+  return request({
+    url: '/store/storeAfterSales/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
+export function cancel(data) {
+  return request({
+    url: '/store/storeAfterSales/cancel',
+    method: 'post',
+    data: data
+  })
+}
+
+export function refund(data) {
+  return request({
+    url: '/store/storeAfterSales/refund',
+    method: 'post',
+    data: data
+  })
+}
+
+export function audit1(data) {
+  return request({
+    url: '/store/storeAfterSales/audit1',
+    method: 'post',
+    data: data
+  })
+}
+export function audit2(data) {
+  return request({
+    url: '/store/storeAfterSales/audit2',
+    method: 'post',
+    data: data
+  })
+}
+

+ 53 - 0
src/api/hisStore/storeAfterSalesItem.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询售后子列表
+export function listStoreAfterSalesItem(query) {
+  return request({
+    url: '/store/storeAfterSalesItem/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询售后子详细
+export function getStoreAfterSalesItem(id) {
+  return request({
+    url: '/store/storeAfterSalesItem/' + id,
+    method: 'get'
+  })
+}
+
+// 新增售后子
+export function addStoreAfterSalesItem(data) {
+  return request({
+    url: '/store/storeAfterSalesItem',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改售后子
+export function updateStoreAfterSalesItem(data) {
+  return request({
+    url: '/store/storeAfterSalesItem',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除售后子
+export function delStoreAfterSalesItem(id) {
+  return request({
+    url: '/store/storeAfterSalesItem/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出售后子
+export function exportStoreAfterSalesItem(query) {
+  return request({
+    url: '/store/storeAfterSalesItem/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeAfterSalesStatus.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询售后订单操作列表
+export function listStoreAfterSalesStatus(query) {
+  return request({
+    url: '/store/storeAfterSalesStatus/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询售后订单操作详细
+export function getStoreAfterSalesStatus(id) {
+  return request({
+    url: '/store/storeAfterSalesStatus/' + id,
+    method: 'get'
+  })
+}
+
+// 新增售后订单操作
+export function addStoreAfterSalesStatus(data) {
+  return request({
+    url: '/store/storeAfterSalesStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改售后订单操作
+export function updateStoreAfterSalesStatus(data) {
+  return request({
+    url: '/store/storeAfterSalesStatus',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除售后订单操作
+export function delStoreAfterSalesStatus(id) {
+  return request({
+    url: '/store/storeAfterSalesStatus/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出售后订单操作
+export function exportStoreAfterSalesStatus(query) {
+  return request({
+    url: '/store/storeAfterSalesStatus/export',
+    method: 'get',
+    params: query
+  })
+}

+ 21 - 0
src/api/hisStore/storeCanvas.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+ 
+
+// 查询画布信息详细
+export function getStoreCanvas(canvasId) {
+  return request({
+    url: '/store/storeCanvas/' + canvasId,
+    method: 'get'
+  })
+}
+ 
+// 修改画布信息
+export function updateStoreCanvas(data) {
+  return request({
+    url: '/store/storeCanvas',
+    method: 'put',
+    data: data
+  })
+}
+ 

+ 53 - 0
src/api/hisStore/storeCart.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询购物车列表
+export function listStoreCart(query) {
+  return request({
+    url: '/store/storeCart/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询购物车详细
+export function getStoreCart(id) {
+  return request({
+    url: '/store/storeCart/' + id,
+    method: 'get'
+  })
+}
+
+// 新增购物车
+export function addStoreCart(data) {
+  return request({
+    url: '/store/storeCart',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改购物车
+export function updateStoreCart(data) {
+  return request({
+    url: '/store/storeCart',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除购物车
+export function delStoreCart(id) {
+  return request({
+    url: '/store/storeCart/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出购物车
+export function exportStoreCart(query) {
+  return request({
+    url: '/store/storeCart/export',
+    method: 'get',
+    params: query
+  })
+}

+ 70 - 0
src/api/hisStore/storeCoupon.js

@@ -0,0 +1,70 @@
+import request from '@/utils/request'
+
+// 查询优惠券列表
+export function listStoreCoupon(query) {
+  return request({
+    url: '/store/storeCoupon/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询优惠券详细
+export function getStoreCoupon(couponId) {
+  return request({
+    url: '/store/storeCoupon/' + couponId,
+    method: 'get'
+  })
+}
+
+// 新增优惠券
+export function addStoreCoupon(data) {
+  return request({
+    url: '/store/storeCoupon',
+    method: 'post',
+    data: data
+  })
+}
+export function publishCoupon(data) {
+  return request({
+    url: '/store/storeCoupon/publish',
+    method: 'post',
+    data: data
+  })
+}
+
+export function batchPublishCoupon(data) {
+  return request({
+    url: '/store/storeCoupon/batchPublish',
+    method: 'post',
+    data: data
+  })
+}
+
+
+
+// 修改优惠券
+export function updateStoreCoupon(data) {
+  return request({
+    url: '/store/storeCoupon',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除优惠券
+export function delStoreCoupon(couponId) {
+  return request({
+    url: '/store/storeCoupon/' + couponId,
+    method: 'delete'
+  })
+}
+
+// 导出优惠券
+export function exportStoreCoupon(query) {
+  return request({
+    url: '/store/storeCoupon/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeCouponIssue.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询优惠券领取列表
+export function listStoreCouponIssue(query) {
+  return request({
+    url: '/store/storeCouponIssue/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询优惠券领取详细
+export function getStoreCouponIssue(id) {
+  return request({
+    url: '/store/storeCouponIssue/' + id,
+    method: 'get'
+  })
+}
+
+// 新增优惠券领取
+export function addStoreCouponIssue(data) {
+  return request({
+    url: '/store/storeCouponIssue',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改优惠券领取
+export function updateStoreCouponIssue(data) {
+  return request({
+    url: '/store/storeCouponIssue',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除优惠券领取
+export function delStoreCouponIssue(id) {
+  return request({
+    url: '/store/storeCouponIssue/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出优惠券领取
+export function exportStoreCouponIssue(query) {
+  return request({
+    url: '/store/storeCouponIssue/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeCouponIssueUser.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询优惠券用户领取记录列表
+export function listStoreCouponIssueUser(query) {
+  return request({
+    url: '/store/storeCouponIssueUser/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询优惠券用户领取记录详细
+export function getStoreCouponIssueUser(id) {
+  return request({
+    url: '/store/storeCouponIssueUser/' + id,
+    method: 'get'
+  })
+}
+
+// 新增优惠券用户领取记录
+export function addStoreCouponIssueUser(data) {
+  return request({
+    url: '/store/storeCouponIssueUser',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改优惠券用户领取记录
+export function updateStoreCouponIssueUser(data) {
+  return request({
+    url: '/store/storeCouponIssueUser',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除优惠券用户领取记录
+export function delStoreCouponIssueUser(id) {
+  return request({
+    url: '/store/storeCouponIssueUser/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出优惠券用户领取记录
+export function exportStoreCouponIssueUser(query) {
+  return request({
+    url: '/store/storeCouponIssueUser/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeCouponUser.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询优惠券发放记录列表
+export function listStoreCouponUser(query) {
+  return request({
+    url: '/store/storeCouponUser/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询优惠券发放记录详细
+export function getStoreCouponUser(id) {
+  return request({
+    url: '/store/storeCouponUser/' + id,
+    method: 'get'
+  })
+}
+
+// 新增优惠券发放记录
+export function addStoreCouponUser(data) {
+  return request({
+    url: '/store/storeCouponUser',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改优惠券发放记录
+export function updateStoreCouponUser(data) {
+  return request({
+    url: '/store/storeCouponUser',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除优惠券发放记录
+export function delStoreCouponUser(id) {
+  return request({
+    url: '/store/storeCouponUser/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出优惠券发放记录
+export function exportStoreCouponUser(query) {
+  return request({
+    url: '/store/storeCouponUser/export',
+    method: 'get',
+    params: query
+  })
+}

+ 287 - 0
src/api/hisStore/storeOrder.js

@@ -0,0 +1,287 @@
+import request from '@/utils/request'
+
+// 查询订单列表
+export function listStoreOrder(query) {
+  return request({
+    url: '/store/storeOrder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询订单明细总数
+export function getOrderItemsNum(query) {
+  return request({
+    url: '/store/storeOrder/orderItemsNum',
+    method: 'get',
+    params: query
+  })
+}
+// 查询尾款订单列表
+export function listPayRemainOrder(query) {
+  return request({
+    url: '/store/storeOrder/payRemainList',
+    method: 'get',
+    params: query
+  })
+}
+// 查询推广订单列表
+export function listPromotionOrder(query) {
+  return request({
+    url: '/store/storeOrder/promotionList',
+    method: 'get',
+    params: query
+  })
+}
+// 查询健康商城订单列表
+export function listHealthStoreOrder(query) {
+  return request({
+    url: '/store/storeOrder/healthList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getCustomerOrderList(query) {
+  return request({
+    url: '/store/storeOrder/getCustomerOrderList',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
+
+
+// 查询订单详细
+export function getStoreOrder(id) {
+  return request({
+    url: '/store/storeOrder/' + id,
+    method: 'get'
+  })
+}
+
+// 查询订单详细
+export function getStoreOrderAddress(id) {
+  return request({
+    url: '/store/storeOrder/queryAddress/' + id,
+    method: 'get'
+  })
+}
+
+// 查询订单详细
+export function getStoreOrderPhone(id) {
+  return request({
+    url: '/store/storeOrder/queryPhone/' + id,
+    method: 'get'
+  })
+}
+
+
+export function getExpress(id) {
+  return request({
+    url: '/store/storeOrder/getExpress/' + id,
+    method: 'get'
+  })
+}
+
+// 新增订单
+export function addStoreOrder(data) {
+  return request({
+    url: '/store/storeOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改订单
+export function updateStoreOrder(data) {
+  return request({
+    url: '/store/storeOrder',
+    method: 'put',
+    data: data
+  })
+}
+
+// 修改物流编号
+export function updateDeliveryId(data) {
+  return request({
+    url: '/store/storeOrder/editDeliveryId',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除订单
+export function delStoreOrder(id) {
+  return request({
+    url: '/store/storeOrder/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出订单
+export function exportStoreOrder(query) {
+  return request({
+    url: '/store/storeOrder/export',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出订单
+export function exportHealthStoreOrder(query) {
+  return request({
+    url: '/store/storeOrder/healthExport',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出订单
+export function exportPromotionOrder(query) {
+  return request({
+    url: '/store/storeOrder/promotionExport',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出付尾款订单
+export function exportStorePayRemainOrder(query) {
+  return request({
+    url: '/store/storeOrder/payRemainExport',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出订单
+export function exportStoreOrderItems(query) {
+  return request({
+    url: '/store/storeOrder/exportItems',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出订单
+export function exportHealthStoreOrderItems(query) {
+  return request({
+    url: '/store/storeOrder/healthExportItems',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createUserOrder(data) {
+  return request({
+    url: '/store/storeOrder/createUserOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+export function finishOrder(data) {
+  return request({
+    url: '/store/storeOrder/finishOrder',
+    method: 'post',
+    data: data
+  })
+}
+export function importTemplate() {
+  return request({
+    url: '/store/storeOrder/importTemplate',
+    method: 'get'
+  })
+}
+
+export function editTuiMoney(data) {
+  return request({
+    url: '/store/storeOrder/editTuiMoney',
+    method: 'post',
+    data: data
+  })
+}
+
+export function refundOrderMoney(data) {
+  return request({
+    url: '/store/storeOrder/refundOrderMoney',
+    method: 'post',
+    data: data
+  })
+}
+
+export function updateExpress(data) {
+  return request({
+    url: '/store/storeOrder/updateExpress',
+    method: 'post',
+    data: data
+  })
+}
+export function syncExpress(data) {
+  return request({
+    url: '/store/storeOrder/syncExpress',
+    method: 'post',
+    data: data
+  })
+}
+
+export function updateErp(data) {
+  return request({
+    url: '/store/storeOrder/updateErpOrder',
+    method: 'post',
+    data: data
+  })
+}
+export function addTuiMoney(data) {
+  return request({
+    url: '/store/storeOrder/addTuiMoney',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getEroOrder(query) {
+  return request({
+    url: '/store/storeOrder/getEroOrder',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createErpOrder(query) {
+  return request({
+    url: '/store/storeOrder/createErpOrder',
+    method: 'get',
+    params: query
+  })
+}
+
+//审核
+export function auditPayRemain(data) {
+  return request({
+    url: '/store/storeOrder/auditPayRemain',
+    method: 'post',
+    data: data
+  })
+}
+
+// 订单维度分页查询接口
+export function orderDimensionStatisticsList(query) {
+  return request({
+    url: '/store/storeOrder/orderDimensionStatisticsList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出订单维度统计接口
+export function orderDimensionStatisticsExport(query) {
+  return request({
+    url: '/store/storeOrder/orderDimensionStatisticsExport',
+    method: 'get',
+    params: query
+  })
+}

+ 19 - 0
src/api/hisStore/storeOrderAudit.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+
+// 获取审核列表
+export const list = (query) => {
+  return request({
+    url: '/store/storeOrderAudit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 审核
+export const audit = (data) => {
+  return request({
+    url: '/store/storeOrderAudit/audit',
+    method: 'post',
+    data: data
+  })
+}

+ 53 - 0
src/api/hisStore/storeOrderItem.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询订单详情列表
+export function listStoreOrderItem(query) {
+  return request({
+    url: '/store/storeOrderItem/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询订单详情详细
+export function getStoreOrderItem(itemId) {
+  return request({
+    url: '/store/storeOrderItem/' + itemId,
+    method: 'get'
+  })
+}
+
+// 新增订单详情
+export function addStoreOrderItem(data) {
+  return request({
+    url: '/store/storeOrderItem',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改订单详情
+export function updateStoreOrderItem(data) {
+  return request({
+    url: '/store/storeOrderItem',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除订单详情
+export function delStoreOrderItem(itemId) {
+  return request({
+    url: '/store/storeOrderItem/' + itemId,
+    method: 'delete'
+  })
+}
+
+// 导出订单详情
+export function exportStoreOrderItem(query) {
+  return request({
+    url: '/store/storeOrderItem/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeOrderNotice.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询订单通知用户 接收订单通知的用户列表
+export function listStoreOrderNotice(query) {
+  return request({
+    url: '/store/storeOrderNotice/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询订单通知用户 接收订单通知的用户详细
+export function getStoreOrderNotice(id) {
+  return request({
+    url: '/store/storeOrderNotice/' + id,
+    method: 'get'
+  })
+}
+
+// 新增订单通知用户 接收订单通知的用户
+export function addStoreOrderNotice(data) {
+  return request({
+    url: '/store/storeOrderNotice',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改订单通知用户 接收订单通知的用户
+export function updateStoreOrderNotice(data) {
+  return request({
+    url: '/store/storeOrderNotice',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除订单通知用户 接收订单通知的用户
+export function delStoreOrderNotice(id) {
+  return request({
+    url: '/store/storeOrderNotice/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出订单通知用户 接收订单通知的用户
+export function exportStoreOrderNotice(query) {
+  return request({
+    url: '/store/storeOrderNotice/export',
+    method: 'get',
+    params: query
+  })
+}

+ 69 - 0
src/api/hisStore/storeOrderOffline.js

@@ -0,0 +1,69 @@
+import request from '@/utils/request'
+
+// 查询线下订单列表
+export function listStoreOrderOffline(query) {
+  return request({
+    url: '/store/storeOrderOffline/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询线下订单详细
+export function getStoreOrderOffline(orderId) {
+  return request({
+    url: '/store/storeOrderOffline/' + orderId,
+    method: 'get'
+  })
+}
+//查看电话
+export function getPhone(orderId) {
+  return request({
+    url: '/store/storeOrderOffline/queryPhone/' + orderId,
+    method: 'get'
+  })
+}
+
+// 新增线下订单
+export function addStoreOrderOffline(data) {
+  return request({
+    url: '/store/storeOrderOffline',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改线下订单
+export function updateStoreOrderOffline(data) {
+  return request({
+    url: '/store/storeOrderOffline',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除线下订单
+export function delStoreOrderOffline(orderId) {
+  return request({
+    url: '/store/storeOrderOffline/' + orderId,
+    method: 'delete'
+  })
+}
+
+// 导出线下订单
+export function exportStoreOrderOffline(query) {
+  return request({
+    url: '/store/storeOrderOffline/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+//审核订单
+export function auditOrder(orderId) {
+  return request({
+    url: '/store/storeOrderOffline/auditOrder/' + orderId,
+    method: 'post',
+  })
+}

+ 53 - 0
src/api/hisStore/storeOrderStatus.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询订单操作记录列表
+export function listStoreOrderStatus(query) {
+  return request({
+    url: '/store/storeOrderStatus/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询订单操作记录详细
+export function getStoreOrderStatus(id) {
+  return request({
+    url: '/store/storeOrderStatus/' + id,
+    method: 'get'
+  })
+}
+
+// 新增订单操作记录
+export function addStoreOrderStatus(data) {
+  return request({
+    url: '/store/storeOrderStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改订单操作记录
+export function updateStoreOrderStatus(data) {
+  return request({
+    url: '/store/storeOrderStatus',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除订单操作记录
+export function delStoreOrderStatus(id) {
+  return request({
+    url: '/store/storeOrderStatus/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出订单操作记录
+export function exportStoreOrderStatus(query) {
+  return request({
+    url: '/store/storeOrderStatus/export',
+    method: 'get',
+    params: query
+  })
+}

+ 78 - 0
src/api/hisStore/storePayment.js

@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+// 查询支付明细列表
+export function listStorePayment(query,refundDateRange) {
+    if (null != refundDateRange && '' != refundDateRange) {
+      query.refundBeginTime = refundDateRange[0];
+      query.refundEndTime = refundDateRange[1];
+    }else{
+      query.refundBeginTime =null;
+      query.refundEndTime =null;
+    }
+    return request({
+      url: '/store/storePayment/list',
+      method: 'get',
+      params: query
+    })
+}
+
+// 查询支付明细详细
+export function getStorePayment(paymentId) {
+  return request({
+    url: '/store/storePayment/' + paymentId,
+    method: 'get'
+  })
+}
+
+// 新增支付明细
+export function addStorePayment(data) {
+  return request({
+    url: '/store/storePayment',
+    method: 'post',
+    data: data
+  })
+}
+
+export function refundStorePayment(data) {
+  return request({
+    url: '/store/storePayment/refundStorePayment',
+    method: 'post',
+    data: data
+  })
+}
+
+
+// 修改支付明细
+export function updateStorePayment(data) {
+  return request({
+    url: '/store/storePayment',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除支付明细
+export function delStorePayment(paymentId) {
+  return request({
+    url: '/store/storePayment/' + paymentId,
+    method: 'delete'
+  })
+}
+
+// 导出支付明细
+export function exportStorePayment(query) {
+  return request({
+    url: '/store/storePayment/export',
+    method: 'get',
+    params: query
+  })
+}
+
+//同步订单状态
+export function setPayNotify(data) {
+  return request({
+    url: '/store/storePayment/returnPayStatus',
+    method: 'post',
+    data: data
+  })
+}

+ 96 - 0
src/api/hisStore/storeProduct.js

@@ -0,0 +1,96 @@
+import request from '@/utils/request'
+
+// 查询商品列表
+export function listStoreProduct(query) {
+  return request({
+    url: '/store/storeProduct/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function batchModify(param) {
+  return request({
+    url: '/store/storeProduct/batchModify',
+    method: 'post',
+    data: param
+  })
+}
+
+// 查询商品详细
+export function getStoreProduct(productId) {
+  return request({
+    url: '/store/storeProduct/' + productId,
+    method: 'get'
+  })
+}
+
+
+export function addOrEdit(data) {
+  return request({
+    url: '/store/storeProduct/addOrEdit',
+    method: 'post',
+    data: data
+  })
+}
+
+export function importTemplate() {
+  return request({
+    url: '/store/storeProduct/importTemplate',
+    method: 'get'
+  })
+}
+
+
+// 删除商品
+export function delStoreProduct(productId) {
+  return request({
+    url: '/store/storeProduct/' + productId,
+    method: 'delete'
+  })
+}
+
+// 导出商品
+export function exportStoreProduct(query) {
+  return request({
+    url: '/store/storeProduct/export',
+    method: 'get',
+    params: query
+  })
+}
+
+export function genFormatAttr(productId,json) {
+  return request({
+    url: '/store/storeProduct/genFormatAttr/'+productId,
+    method: 'post',
+    data: json
+  })
+}
+
+
+export function getStoreProductAttrValueList(query) {
+  return request({
+    url: '/store/storeProduct/getStoreProductAttrValueList',
+    method: 'get',
+    params: query
+  })
+}
+
+
+export function getStoreTuiProductAttrValueList(query) {
+  return request({
+    url: '/store/storeProduct/getStoreTuiProductAttrValueList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function productBySearCh(query) {
+  return request({
+    url: '/store/storeProduct/listBySearch',
+    method: 'get',
+    params: query
+  })
+}
+
+

+ 53 - 0
src/api/hisStore/storeProductAttr.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品属性列表
+export function listStoreProductAttr(query) {
+  return request({
+    url: '/store/storeProductAttr/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品属性详细
+export function getStoreProductAttr(id) {
+  return request({
+    url: '/store/storeProductAttr/' + id,
+    method: 'get'
+  })
+}
+
+// 新增商品属性
+export function addStoreProductAttr(data) {
+  return request({
+    url: '/store/storeProductAttr',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品属性
+export function updateStoreProductAttr(data) {
+  return request({
+    url: '/store/storeProductAttr',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品属性
+export function delStoreProductAttr(id) {
+  return request({
+    url: '/store/storeProductAttr/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出商品属性
+export function exportStoreProductAttr(query) {
+  return request({
+    url: '/store/storeProductAttr/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductAttrValue.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品属性值列表
+export function listStoreProductAttrValue(query) {
+  return request({
+    url: '/store/storeProductAttrValue/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品属性值详细
+export function getStoreProductAttrValue(id) {
+  return request({
+    url: '/store/storeProductAttrValue/' + id,
+    method: 'get'
+  })
+}
+
+// 新增商品属性值
+export function addStoreProductAttrValue(data) {
+  return request({
+    url: '/store/storeProductAttrValue',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品属性值
+export function updateStoreProductAttrValue(data) {
+  return request({
+    url: '/store/storeProductAttrValue',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品属性值
+export function delStoreProductAttrValue(id) {
+  return request({
+    url: '/store/storeProductAttrValue/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出商品属性值
+export function exportStoreProductAttrValue(query) {
+  return request({
+    url: '/store/storeProductAttrValue/export',
+    method: 'get',
+    params: query
+  })
+}

+ 59 - 0
src/api/hisStore/storeProductCategory.js

@@ -0,0 +1,59 @@
+import request from '@/utils/request'
+
+// 查询商品分类列表
+export function listStoreProductCategory(query) {
+  return request({
+    url: '/store/storeProductCategory/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品分类详细
+export function getStoreProductCategory(cateId) {
+  return request({
+    url: '/store/storeProductCategory/' + cateId,
+    method: 'get'
+  })
+}
+
+// 新增商品分类
+export function addStoreProductCategory(data) {
+  return request({
+    url: '/store/storeProductCategory',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品分类
+export function updateStoreProductCategory(data) {
+  return request({
+    url: '/store/storeProductCategory',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品分类
+export function delStoreProductCategory(cateId) {
+  return request({
+    url: '/store/storeProductCategory/' + cateId,
+    method: 'delete'
+  })
+}
+
+// 导出商品分类
+export function exportStoreProductCategory(query) {
+  return request({
+    url: '/store/storeProductCategory/export',
+    method: 'get',
+    params: query
+  })
+}
+export function getAllStoreProductCategory() {
+  return request({
+    url: '/store/storeProductCategory/getAllList' ,
+    method: 'get'
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductDetails.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品详情列表
+export function listStoreProductDetails(query) {
+  return request({
+    url: '/store/storeProductDetails/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品详情详细
+export function getStoreProductDetails(detailsId) {
+  return request({
+    url: '/store/storeProductDetails/' + detailsId,
+    method: 'get'
+  })
+}
+
+// 新增商品详情
+export function addStoreProductDetails(data) {
+  return request({
+    url: '/store/storeProductDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品详情
+export function updateStoreProductDetails(data) {
+  return request({
+    url: '/store/storeProductDetails',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品详情
+export function delStoreProductDetails(detailsId) {
+  return request({
+    url: '/store/storeProductDetails/' + detailsId,
+    method: 'delete'
+  })
+}
+
+// 导出商品详情
+export function exportStoreProductDetails(query) {
+  return request({
+    url: '/store/storeProductDetails/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductGroup.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品组合列表
+export function listStoreProductGroup(query) {
+  return request({
+    url: '/store/storeProductGroup/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品组合详细
+export function getStoreProductGroup(groupId) {
+  return request({
+    url: '/store/storeProductGroup/' + groupId,
+    method: 'get'
+  })
+}
+
+// 新增商品组合
+export function addStoreProductGroup(data) {
+  return request({
+    url: '/store/storeProductGroup',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品组合
+export function updateStoreProductGroup(data) {
+  return request({
+    url: '/store/storeProductGroup',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品组合
+export function delStoreProductGroup(groupId) {
+  return request({
+    url: '/store/storeProductGroup/' + groupId,
+    method: 'delete'
+  })
+}
+
+// 导出商品组合
+export function exportStoreProductGroup(query) {
+  return request({
+    url: '/store/storeProductGroup/export',
+    method: 'get',
+    params: query
+  })
+}

+ 71 - 0
src/api/hisStore/storeProductPackage.js

@@ -0,0 +1,71 @@
+import request from '@/utils/request'
+
+// 查询商品组合套餐列表
+export function listStoreProductPackage(query) {
+  return request({
+    url: '/store/storeProductPackage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品组合套餐详细
+export function getStoreProductPackage(packageId) {
+  return request({
+    url: '/store/storeProductPackage/' + packageId,
+    method: 'get'
+  })
+}
+
+// 新增商品组合套餐
+export function addStoreProductPackage(data) {
+  return request({
+    url: '/store/storeProductPackage',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品组合套餐
+export function updateStoreProductPackage(data) {
+  return request({
+    url: '/store/storeProductPackage',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品组合套餐
+export function delStoreProductPackage(packageId) {
+  return request({
+    url: '/store/storeProductPackage/' + packageId,
+    method: 'delete'
+  })
+}
+
+// 导出商品组合套餐
+export function exportStoreProductPackage(query) {
+  return request({
+    url: '/store/storeProductPackage/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 批量修改商品组合套餐
+export function modifyStoreProductPackages(data) {
+  return request({
+    url: '/store/storeProductPackage/modifyMore',
+    method: 'post',
+    data: data
+  })
+}
+
+export function packageBySearch(query) {
+  return request({
+    url: '/store/storeProductPackage/listBySearch',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductRelation.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品点赞和收藏列表
+export function listStoreProductRelation(query) {
+  return request({
+    url: '/store/storeProductRelation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品点赞和收藏详细
+export function getStoreProductRelation(id) {
+  return request({
+    url: '/store/storeProductRelation/' + id,
+    method: 'get'
+  })
+}
+
+// 新增商品点赞和收藏
+export function addStoreProductRelation(data) {
+  return request({
+    url: '/store/storeProductRelation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品点赞和收藏
+export function updateStoreProductRelation(data) {
+  return request({
+    url: '/store/storeProductRelation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品点赞和收藏
+export function delStoreProductRelation(id) {
+  return request({
+    url: '/store/storeProductRelation/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出商品点赞和收藏
+export function exportStoreProductRelation(query) {
+  return request({
+    url: '/store/storeProductRelation/export',
+    method: 'get',
+    params: query
+  })
+}

+ 62 - 0
src/api/hisStore/storeProductReply.js

@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+
+// 查询评论列表
+export function listStoreProductReply(query) {
+  return request({
+    url: '/store/storeProductReply/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询评论详细
+export function getStoreProductReply(id) {
+  return request({
+    url: '/store/storeProductReply/' + id,
+    method: 'get'
+  })
+}
+
+// 新增评论
+export function addStoreProductReply(data) {
+  return request({
+    url: '/store/storeProductReply',
+    method: 'post',
+    data: data
+  })
+}
+export function replyStoreProductReply(data) {
+  return request({
+    url: '/store/storeProductReply/reply',
+    method: 'post',
+    data: data
+  })
+}
+
+
+
+// 修改评论
+export function updateStoreProductReply(data) {
+  return request({
+    url: '/store/storeProductReply',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除评论
+export function delStoreProductReply(id) {
+  return request({
+    url: '/store/storeProductReply/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出评论
+export function exportStoreProductReply(query) {
+  return request({
+    url: '/store/storeProductReply/export',
+    method: 'get',
+    params: query
+  })
+}

+ 61 - 0
src/api/hisStore/storeProductRule.js

@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 查询商品规则值(规格)列表
+export function listStoreProductRule(query) {
+  return request({
+    url: '/store/storeProductRule/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品规则值(规格)详细
+export function getStoreProductRule(id) {
+  return request({
+    url: '/store/storeProductRule/' + id,
+    method: 'get'
+  })
+}
+
+// 新增商品规则值(规格)
+export function addStoreProductRule(data) {
+  return request({
+    url: '/store/storeProductRule',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品规则值(规格)
+export function updateStoreProductRule(data) {
+  return request({
+    url: '/store/storeProductRule',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品规则值(规格)
+export function delStoreProductRule(id) {
+  return request({
+    url: '/store/storeProductRule/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出商品规则值(规格)
+export function exportStoreProductRule(query) {
+  return request({
+    url: '/store/storeProductRule/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+export function getAllStoreProductRule() {
+  return request({
+    url: '/store/storeProductRule/getAllList',
+    method: 'get'
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductTemplate.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品模板列表
+export function listStoreProductTemplate(query) {
+  return request({
+    url: '/store/storeProductTemplate/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品模板详细
+export function getStoreProductTemplate(tempId) {
+  return request({
+    url: '/store/storeProductTemplate/' + tempId,
+    method: 'get'
+  })
+}
+
+// 新增商品模板
+export function addStoreProductTemplate(data) {
+  return request({
+    url: '/store/storeProductTemplate',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品模板
+export function updateStoreProductTemplate(data) {
+  return request({
+    url: '/store/storeProductTemplate',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品模板
+export function delStoreProductTemplate(tempId) {
+  return request({
+    url: '/store/storeProductTemplate/' + tempId,
+    method: 'delete'
+  })
+}
+
+// 导出商品模板
+export function exportStoreProductTemplate(query) {
+  return request({
+    url: '/store/storeProductTemplate/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeProductYuyue.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询商品预约列表
+export function listStoreProductYuyue(query) {
+  return request({
+    url: '/store/storeProductYuyue/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询商品预约详细
+export function getStoreProductYuyue(id) {
+  return request({
+    url: '/store/storeProductYuyue/' + id,
+    method: 'get'
+  })
+}
+
+// 新增商品预约
+export function addStoreProductYuyue(data) {
+  return request({
+    url: '/store/storeProductYuyue',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改商品预约
+export function updateStoreProductYuyue(data) {
+  return request({
+    url: '/store/storeProductYuyue',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除商品预约
+export function delStoreProductYuyue(id) {
+  return request({
+    url: '/store/storeProductYuyue/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出商品预约
+export function exportStoreProductYuyue(query) {
+  return request({
+    url: '/store/storeProductYuyue/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeShop.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询门店自提列表
+export function listStoreShop(query) {
+  return request({
+    url: '/store/storeShop/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询门店自提详细
+export function getStoreShop(id) {
+  return request({
+    url: '/store/storeShop/' + id,
+    method: 'get'
+  })
+}
+
+// 新增门店自提
+export function addStoreShop(data) {
+  return request({
+    url: '/store/storeShop',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改门店自提
+export function updateStoreShop(data) {
+  return request({
+    url: '/store/storeShop',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除门店自提
+export function delStoreShop(id) {
+  return request({
+    url: '/store/storeShop/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出门店自提
+export function exportStoreShop(query) {
+  return request({
+    url: '/store/storeShop/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeShopStaff.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询门店店员列表
+export function listStoreShopStaff(query) {
+  return request({
+    url: '/store/storeShopStaff/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询门店店员详细
+export function getStoreShopStaff(id) {
+  return request({
+    url: '/store/storeShopStaff/' + id,
+    method: 'get'
+  })
+}
+
+// 新增门店店员
+export function addStoreShopStaff(data) {
+  return request({
+    url: '/store/storeShopStaff',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改门店店员
+export function updateStoreShopStaff(data) {
+  return request({
+    url: '/store/storeShopStaff',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除门店店员
+export function delStoreShopStaff(id) {
+  return request({
+    url: '/store/storeShopStaff/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出门店店员
+export function exportStoreShopStaff(query) {
+  return request({
+    url: '/store/storeShopStaff/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/storeVisit.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询产品浏览分析列表
+export function listStoreVisit(query) {
+  return request({
+    url: '/store/storeVisit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询产品浏览分析详细
+export function getStoreVisit(id) {
+  return request({
+    url: '/store/storeVisit/' + id,
+    method: 'get'
+  })
+}
+
+// 新增产品浏览分析
+export function addStoreVisit(data) {
+  return request({
+    url: '/store/storeVisit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改产品浏览分析
+export function updateStoreVisit(data) {
+  return request({
+    url: '/store/storeVisit',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除产品浏览分析
+export function delStoreVisit(id) {
+  return request({
+    url: '/store/storeVisit/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出产品浏览分析
+export function exportStoreVisit(query) {
+  return request({
+    url: '/store/storeVisit/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/testReport.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询测试报告列表
+export function listTestReport(query) {
+  return request({
+    url: '/his/testReport/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询测试报告详细
+export function getTestReport(reportId) {
+  return request({
+    url: '/his/testReport/' + reportId,
+    method: 'get'
+  })
+}
+
+// 新增测试报告
+export function addTestReport(data) {
+  return request({
+    url: '/his/testReport',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改测试报告
+export function updateTestReport(data) {
+  return request({
+    url: '/his/testReport',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除测试报告
+export function delTestReport(reportId) {
+  return request({
+    url: '/his/testReport/' + reportId,
+    method: 'delete'
+  })
+}
+
+// 导出测试报告
+export function exportTestReport(query) {
+  return request({
+    url: '/his/testReport/export',
+    method: 'get',
+    params: query
+  })
+}

+ 65 - 0
src/api/hisStore/testTemp.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+// 查询测一测模板列表
+export function listTestTemp(query) {
+  return request({
+    url: '/his/testTemp/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询测一测模板详细
+export function getTempType(tempId) {
+  return request({
+    url: '/his/testTemp/getTempType/' + tempId,
+    method: 'get'
+  })
+}
+export function getTestTemp(tempId) {
+  return request({
+    url: '/his/testTemp/' + tempId,
+    method: 'get'
+  })
+}
+export function getAllTestTemp() {
+  return request({
+    url: '/his/testTemp/allList',
+    method: 'get'
+  })
+}
+
+// 新增测一测模板
+export function addTestTemp(data) {
+  return request({
+    url: '/his/testTemp',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改测一测模板
+export function updateTestTemp(data) {
+  return request({
+    url: '/his/testTemp',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除测一测模板
+export function delTestTemp(tempId) {
+  return request({
+    url: '/his/testTemp/' + tempId,
+    method: 'delete'
+  })
+}
+
+// 导出测一测模板
+export function exportTestTemp(query) {
+  return request({
+    url: '/his/testTemp/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/hisStore/testTempItem.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询模板项目列表
+export function listTestTempItem(query) {
+  return request({
+    url: '/his/testTempItem/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询模板项目详细
+export function getTestTempItem(itemId) {
+  return request({
+    url: '/his/testTempItem/' + itemId,
+    method: 'get'
+  })
+}
+
+// 新增模板项目
+export function addTestTempItem(data) {
+  return request({
+    url: '/his/testTempItem',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改模板项目
+export function updateTestTempItem(data) {
+  return request({
+    url: '/his/testTempItem',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除模板项目
+export function delTestTempItem(itemId) {
+  return request({
+    url: '/his/testTempItem/' + itemId,
+    method: 'delete'
+  })
+}
+
+// 导出模板项目
+export function exportTestTempItem(query) {
+  return request({
+    url: '/his/testTempItem/export',
+    method: 'get',
+    params: query
+  })
+}

+ 117 - 0
src/api/hisStore/user.js

@@ -0,0 +1,117 @@
+import request from '@/utils/request'
+
+// 查询用户列表
+export function listUser(query) {
+  return request({
+    url: '/store/user/list',
+    method: 'get',
+    params: query
+  })
+}
+export function listUserByProject(query) {
+  return request({
+    url: '/store/user/listProject',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询用户详细
+export function getUser(userId) {
+  return request({
+    url: '/store/user/' + userId,
+    method: 'get'
+  })
+}
+
+// 查询用户详细
+export function queryUserVo(userId) {
+  return request({
+    url: '/store/user/queryvo/' + userId,
+    method: 'get'
+  })
+}
+
+// 新增用户
+export function addUser(data) {
+  return request({
+    url: '/store/user',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改用户
+export function updateUser(data) {
+  return request({
+    url: '/store/user',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除用户
+export function delUser(userId) {
+  return request({
+    url: '/store/user/' + userId,
+    method: 'delete'
+  })
+}
+// 删除用户
+export function delUserCompanyUser(id) {
+  return request({
+    url: '/store/user/delete/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出用户
+export function exportUser(query) {
+  return request({
+    url: '/store/user/export',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getUserList(query) {
+  return request({
+    url: '/store/user/getUserList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listBySearch(query) {
+  return request({
+    url: '/store/user/listBySearch',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getAllUserListLimit(query) {
+  return request({
+    url: '/company/companyUser/getAllUserListLimit',
+    method: 'get',
+    params: query
+  })
+}
+
+// 获取小黑屋用户列表
+export function darkRoomList(query) {
+  return request({
+    url: '/store/user/darkRoomList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 批量解禁
+export function enabledUsers(data) {
+  return request({
+    url: '/store/user/enabledUsers',
+    method: 'post',
+    data: data
+  })
+}

+ 61 - 0
src/api/hisStore/userAddress.js

@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 查询用户地址列表
+export function listUserAddress(query) {
+  return request({
+    url: '/store/userAddress/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询用户地址详细
+export function getUserAddress(id) {
+  return request({
+    url: '/store/userAddress/' + id,
+    method: 'get'
+  })
+}
+
+// 新增用户地址
+export function addUserAddress(data) {
+  return request({
+    url: '/store/userAddress',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改用户地址
+export function updateUserAddress(data) {
+  return request({
+    url: '/store/userAddress',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除用户地址
+export function delUserAddress(id) {
+  return request({
+    url: '/store/userAddress/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出用户地址
+export function exportUserAddress(query) {
+  return request({
+    url: '/store/userAddress/export',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getAddressList(query) {
+  return request({
+    url: '/store/userAddress/getAddressList',
+    method: 'get',
+    params: query
+  })
+}

+ 65 - 0
src/api/hisStore/vessel.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+// 查询经络管理列表
+export function listVessel(query) {
+  return request({
+    url: '/his/vessel/list',
+    method: 'get',
+    params: query
+  })
+}
+export function getAllList() {
+  return request({
+    url: '/his/vessel/allList',
+    method: 'get'
+  })
+}
+
+// 查询经络管理详细
+export function getVessel(id) {
+  return request({
+    url: '/his/vessel/' + id,
+    method: 'get'
+  })
+}
+// 下载导入模板
+export function importTemplate() {
+  return request({
+    url: '/his/questions/importTemplate',
+    method: 'get'
+  })
+}
+// 新增经络管理
+export function addVessel(data) {
+  return request({
+    url: '/his/vessel',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改经络管理
+export function updateVessel(data) {
+  return request({
+    url: '/his/vessel',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除经络管理
+export function delVessel(id) {
+  return request({
+    url: '/his/vessel/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出经络管理
+export function exportVessel(query) {
+  return request({
+    url: '/his/vessel/export',
+    method: 'get',
+    params: query
+  })
+}

+ 143 - 0
src/utils/requestHisStore.js

@@ -0,0 +1,143 @@
+/*
+import axios from 'axios'
+import { Notification, MessageBox, Message } from 'element-ui'
+import store from '@/store'
+import { getToken } from '@/utils/auth'
+import errorCode from '@/utils/errorCode'
+
+axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
+// 创建axios实例
+const service = axios.create({
+  // axios中请求配置有baseURL选项,表示请求URL公共部分
+  // baseURL: process.env.VUE_APP_BASE_API,
+  // 超时
+  timeout: 1200000
+})
+
+// 存储当前激活的组件状态键
+let activeStateKey = null;
+
+// 重置指定页面的状态
+export function resetEndpoint() {
+  setActive(null);
+}
+// 设置当前激活状态键
+export function setActive(stateKey) {
+  activeStateKey = stateKey;
+}
+
+
+// request拦截器
+service.interceptors.request.use(config => {
+
+  // 使用当前激活的组件状态来决定是否添加前缀
+  let useNewEndpoint = false
+  let routePrefix = ''
+  let canReg = false
+  if (activeStateKey) {
+    const state = JSON.parse(sessionStorage.getItem(activeStateKey));
+    useNewEndpoint = state.isUsingNewEndpoint;
+    routePrefix = state.prefix;
+    canReg= state.regexGate.split(',').any(reg => config.url.includes(reg));
+  }
+  if (useNewEndpoint && canReg) {
+    config.url = routePrefix + config.url;
+  }
+
+  //判断watch请求
+  if(config.url.indexOf('/watch-api') == -1){
+    config.url = process.env.VUE_APP_BASE_API + config.url
+  }
+
+  // 是否需要设置 token
+  const isToken = (config.headers || {}).isToken === false
+  if (getToken() && !isToken) {
+    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+    config.headers['X-Frontend-Type'] = 'admin'
+  }
+  // get请求映射params参数
+  if (config.method === 'get' && config.params) {
+    let url = config.url + '?';
+    for (const propName of Object.keys(config.params)) {
+      const value = config.params[propName];
+      var part = encodeURIComponent(propName) + "=";
+      if (value !== null && typeof(value) !== "undefined") {
+        if (typeof value === 'object') {
+          for (const key of Object.keys(value)) {
+            if (value[key] !== null && typeof (value[key]) !== 'undefined') {
+              let params = propName + '[' + key + ']';
+              let subPart = encodeURIComponent(params) + '=';
+              url += subPart + encodeURIComponent(value[key]) + '&';
+            }
+          }
+        } else {
+          url += part + encodeURIComponent(value) + "&";
+        }
+      }
+    }
+    url = url.slice(0, -1);
+    config.params = {};
+    config.url = url;
+  }
+  return config
+}, error => {
+    console.log(error)
+    Promise.reject(error)
+})
+
+// 响应拦截器
+service.interceptors.response.use(res => {
+    // 未设置状态码则默认成功状态
+    const code = res.data.code || 200;
+    // 获取错误信息
+    const msg = errorCode[code] || res.data.msg || errorCode['default']
+    if (code === 401) {
+      MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
+          confirmButtonText: '重新登录',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }
+      ).then(() => {
+        store.dispatch('LogOut').then(() => {
+          location.href = '/index';
+        })
+      }).catch(() => {});
+      return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
+    } else if (code === 500) {
+      Message({
+        message: msg,
+        type: 'error'
+      })
+      return Promise.reject(new Error(msg))
+    } else if (code !== 200) {
+      Notification.error({
+        title: msg
+      })
+      return Promise.reject('error')
+    } else {
+      return res.data
+    }
+  },
+  error => {
+    console.log('err' + error)
+    let { message } = error;
+    if (message == "Network Error") {
+      message = "后端接口连接异常";
+    }
+    else if (message.includes("timeout")) {
+      message = "系统接口请求超时";
+    }
+    else if (message.includes("Request failed with status code")) {
+      message = "系统接口" + message.substr(message.length - 3) + "异常";
+    }
+    Message({
+      message: message,
+      type: 'error',
+      duration: 5 * 1000
+    })
+    return Promise.reject(error)
+  }
+)
+
+export default service
+*/

+ 364 - 0
src/views/hisStore/companyUser/index.vue

@@ -0,0 +1,364 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="推广员" prop="nickName">
+            <el-input v-model="queryParams.nickName" placeholder="请输入" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
+          </el-form-item>
+          <el-form-item label="手机号码" prop="phonenumber">
+            <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
+          </el-form-item>
+          <el-form-item label="状态" prop="status">
+            <el-select v-model="queryParams.status" placeholder="员工状态" clearable size="small" style="width: 240px">
+              <el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="创建时间">
+            <el-date-picker v-model="dateRange" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['company:companyUser:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['company:companyUser:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['company:companyUser:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['company:companyUser:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" border :data="companyUserList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="ID" align="center" prop="userId" :show-overflow-tooltip="true" />
+          <el-table-column label="推广员编号" align="center" prop="userName" :show-overflow-tooltip="true" />
+          <el-table-column label="推广员姓名" align="center" prop="nickName" :show-overflow-tooltip="true"  />
+          <!-- <el-table-column label="部门" align="center" prop="dept.deptName" :show-overflow-tooltip="true" /> -->
+          <el-table-column label="手机号码" align="center" prop="phonenumber" width="120" />
+          <el-table-column label="状态" align="center">
+            <template slot-scope="scope">
+              <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column label="创建时间"  sortable align="center" prop="createTime" width="160">
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createTime) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button v-if="scope.row.userType !== '00'" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['company:user:edit']">修改</el-button>
+              <el-button v-if="scope.row.userType !== '00'" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['company:user:remove']">删除</el-button>
+              <el-button size="mini" type="text" icon="el-icon-key" @click="handleResetPwd(scope.row)" v-hasPermi="['company:user:resetPwd']">重置</el-button>
+            </template>
+          </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改企业员工信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="部门ID" prop="deptId">
+          <el-input v-model="form.deptId" placeholder="请输入部门ID" />
+        </el-form-item>
+        <el-form-item label="用户账号" prop="userName">
+          <el-input v-model="form.userName" placeholder="请输入用户账号" />
+        </el-form-item>
+        <el-form-item label="用户昵称" prop="nickName">
+          <el-input v-model="form.nickName" placeholder="请输入用户昵称" />
+        </el-form-item>
+        <el-form-item label="用户类型" prop="userType">
+          <el-select v-model="form.userType" placeholder="请选择用户类型">
+            <el-option label="请选择字典生成" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="用户邮箱" prop="email">
+          <el-input v-model="form.email" placeholder="请输入用户邮箱" />
+        </el-form-item>
+        <el-form-item label="手机号码" prop="phonenumber">
+          <el-input v-model="form.phonenumber" placeholder="请输入手机号码" />
+        </el-form-item>
+        <el-form-item label="用户性别" prop="sex">
+          <el-select v-model="form.sex" placeholder="请选择用户性别">
+            <el-option label="请选择字典生成" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="头像地址" prop="avatar">
+          <el-input v-model="form.avatar" placeholder="请输入头像地址" />
+        </el-form-item>
+        <el-form-item label="密码" prop="password">
+          <el-input v-model="form.password" placeholder="请输入密码" />
+        </el-form-item>
+        <el-form-item label="帐号状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="备注" prop="openId">
+          <el-input v-model="form.openId" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="身份证号" prop="idCard">
+          <el-input v-model="form.idCard" placeholder="请输入身份证号" />
+        </el-form-item>
+        <el-form-item label="公司ID" prop="companyId">
+          <el-input v-model="form.companyId" placeholder="请输入公司ID" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listCompanyUser, getCompanyUser, delCompanyUser, addCompanyUser, updateCompanyUser, exportCompanyUser } from "@/api/company/companyUser";
+
+export default {
+  name: "HisCompanyUser",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 企业员工信息表格数据
+      companyUserList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deptId: null,
+        userName: null,
+        nickName: null,
+        userType: null,
+        email: null,
+        phonenumber: null,
+        sex: null,
+        avatar: null,
+        password: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+        openId: null,
+        idCard: null,
+        companyId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userName: [
+          { required: true, message: "用户账号不能为空", trigger: "blur" }
+        ],
+        nickName: [
+          { required: true, message: "用户昵称不能为空", trigger: "blur" }
+
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询企业员工信息列表 */
+    getList() {
+      this.loading = true;
+      listCompanyUser(this.queryParams).then(response => {
+        this.companyUserList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        userId: null,
+        deptId: null,
+        userName: null,
+        nickName: null,
+        userType: null,
+        email: null,
+        phonenumber: null,
+        sex: null,
+        avatar: null,
+        password: null,
+        status: "0",
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null,
+        openId: null,
+        idCard: null,
+        companyId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.userId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加企业员工信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const userId = row.userId || this.ids
+      getCompanyUser(userId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改企业员工信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.userId != null) {
+            updateCompanyUser(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          } else {
+            addCompanyUser(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$confirm('是否确认删除企业员工信息编号为"' + userIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delCompanyUser(userIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有企业员工信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportCompanyUser(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 63 - 0
src/views/hisStore/components/IllnessLibraryDetails.vue

@@ -0,0 +1,63 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         中医疾病详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 中医疾病信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="疾病名称"><span v-if="item!=null">{{item.illnessName}}</span></el-descriptions-item>
+          <el-descriptions-item label="舌脉"><span v-if="item!=null">{{item.tongueVein}}</span></el-descriptions-item>
+          <el-descriptions-item label="治法"><span v-if="item!=null">{{item.therapy}}</span></el-descriptions-item>
+           <el-descriptions-item label="症状"><span v-if="item!=null">{{item.symptom}}</span></el-descriptions-item>
+          <el-descriptions-item label="方剂名称"><span v-if="item!=null">{{item.formulaName}}</span></el-descriptions-item>
+          <el-descriptions-item label="方剂详情"><span v-if="item!=null">{{item.formulaDescs}}</span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+import { listillnessLibrary, getillnessLibrary, delillnessLibrary, addillnessLibrary, updateillnessLibrary, exportillnessLibrary } from "@/api/hisStore/illnessLibrary";
+  export default {
+    name: "IllnessLibrary",
+    props:["data"],
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getillnessLibrary(orderId).then(response => {
+            this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 109 - 0
src/views/hisStore/components/addBatchPublish.vue

@@ -0,0 +1,109 @@
+<template>
+    <div>
+            <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+                <el-form-item label="优惠券数量" >
+                    {{ids.length}}个
+                </el-form-item>
+                <el-form-item label="优惠券开始时间" prop="startTime">
+                <el-date-picker clearable size="small" style="width: 200px"
+                    v-model="form.startTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择开始时间">
+                </el-date-picker>
+                </el-form-item>
+                <el-form-item label="优惠券结束时间" prop="limitTime">
+                <el-date-picker clearable size="small" style="width: 200px"
+                    v-model="form.limitTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择结束时间">
+                </el-date-picker>
+                </el-form-item>
+                <el-form-item label="优惠券领取数量" prop="totalCount">
+                <el-input-number v-model="form.totalCount" :min="0" placeholder="请输入优惠券领取数量" />
+                </el-form-item>
+            </el-form>
+             <div   class="footer">
+            <el-button type="primary" @click="submitForm">确 定</el-button>
+            <el-button @click="cancel">取 消</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+    import { batchPublishCoupon  } from "@/api/hisStore/storeCoupon";
+export default {
+        name: "batchPublish",
+        data() {
+            return {
+                statusOptions:[],
+                ids:[],
+                // 表单参数
+                form: {},
+                // 表单校验
+                rules: {
+                    totalCount: [
+                    { required: true, message: "数量不能为空", trigger: "blur" }
+                    ],
+                    startTime: [
+                    { required: true, message: "开始时间不能为空", trigger: "blur" }
+                    ],
+                    limitTime: [
+                    { required: true, message: "结束时间不能为空", trigger: "blur" }
+                    ],
+                }
+            };
+        },
+        created() {
+
+        },
+        methods: {
+            cancel(){
+                this.$emit('close');
+            },
+            handleBatch(ids) {
+                console.log(ids)
+                this.ids=ids;
+
+            },
+            /** 提交按钮 */
+            submitForm() {
+                this.$refs["form"].validate(valid => {
+                    if (valid) {
+                        this.myloading = this.$loading({
+                            lock: true,
+                            text: '处理中...',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(0, 0, 0, 0.7)'
+                        });
+                        this.form.ids=this.ids.toString();
+                        batchPublishCoupon(this.form).then(response => {
+                            this.myloading.close()
+                            if (response.code === 200) {
+                                this.msgSuccess("发布成功");
+                                this.$emit('close');
+                            }
+                        });
+                    }
+                });
+            },
+        }
+    };
+</script>
+<style lang="scss" scoped>
+.contents{
+    height: 100%;
+    background-color: #fff;
+    padding: 20px;
+
+}
+.footer{
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+}
+</style>
+
+
+

+ 72 - 0
src/views/hisStore/components/addUser.vue

@@ -0,0 +1,72 @@
+<template>
+  <div >
+       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="会员昵称" prop="nickname">
+          <el-input v-model="form.nickname" placeholder="请输入用户昵称" />
+        </el-form-item>
+        <el-form-item label="手机号码" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号码" />
+        </el-form-item>
+        <el-form-item label="状态">
+            <el-radio-group v-model="form.status">
+              <el-radio :label="item.dictValue" v-for="item in statusOptions" >{{item.dictLabel}}</el-radio>
+            </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <div    style="text-align:right;">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+  </div>
+</template>
+
+<script>
+import { listUser, getUser, delUser, addUser, updateUser, exportUser } from "@/api/hisStore/user";
+
+export default {
+  name: "add",
+  data() {
+    return {
+      statusOptions:[],
+      // 表单参数
+      form: {
+        status:"1"
+      },
+      // 表单校验
+      rules: {
+        phone: [
+          { required: true, message: "手机号不能为空", trigger: "blur" }
+        ],
+        nickname: [
+          { required: true, message: "会员昵称不能为空", trigger: "blur" }
+        ],
+
+      }
+    };
+  },
+  created() {
+    this.getDicts("user_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+  },
+
+  methods: {
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          addUser(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("新增成功");
+              this.$emit("addUser")
+
+            }
+          });
+        }
+      });
+    },
+
+  }
+};
+</script>
+<style scoped>
+
+</style>

+ 155 - 0
src/views/hisStore/components/addUserAddress.vue

@@ -0,0 +1,155 @@
+<template>
+  <div >
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="收货人姓名" prop="realName">
+          <el-input v-model="form.realName" placeholder="请输入收货人姓名" />
+        </el-form-item>
+        <el-form-item label="收货人电话" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入收货人电话" />
+        </el-form-item>
+        <el-form-item label="收货地址" prop="district">
+          <el-row :gutter="20">
+          <el-col :span="6">
+             <el-select @change="provinceChange" v-model="form.province" placeholder="请选择">
+                <el-option
+                  v-for="item in province"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+          <el-col :span="6">
+            <el-select @change="cityChange" v-model="form.city" placeholder="请选择">
+                <el-option
+                  v-for="item in city"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+          <el-col :span="6">
+             <el-select @change="districtChange" v-model="form.district" placeholder="请选择">
+                <el-option
+                  v-for="item in district"
+                  :key="item.cityId"
+                  :label="item.name"
+                  :value="item.cityId">
+                </el-option>
+              </el-select>
+          </el-col>
+        </el-row>
+        </el-form-item>
+        <el-form-item label="详细地址" prop="detail">
+          <el-input v-model="form.detail" placeholder="请输入收货人详细地址" />
+        </el-form-item>
+      </el-form>
+      <div  style="text-align:right;">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+  </div>
+</template>
+
+<script>
+import { listUserAddress, getUserAddress, delUserAddress, addUserAddress, updateUserAddress, exportUserAddress } from "@/api/hisStore/userAddress";
+import {getAllList} from "@/api/hisStore/city";
+export default {
+  name: "add",
+  data() {
+    return {
+      citys:[],
+      province:[],
+      city:[],
+      district:[],
+      // 表单参数
+      form: {
+        province:null,
+        city:null,
+        district:null,
+        cityId:null,
+      },
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: "会员不能为空", trigger: "blur" }
+        ],
+        realName: [
+          { required: true, message: "姓名不能为空", trigger: "blur" }
+        ],
+        phone: [
+          { required: true, message: "电话不能为空", trigger: "blur" }
+        ],
+        detail: [
+          { required: true, message: "详细地址不能为空", trigger: "blur" }
+        ],
+        district: [
+          { required: true, message: "收货地址不能为空", trigger: "blur" }
+        ],
+
+      }
+    };
+  },
+  created(){
+    this.getCityList();
+  },
+  methods: {
+    districtChange(val){
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.district=item.name;
+
+    },
+    cityChange(val){
+      this.district=this.citys.filter(item => item.parentId===val )
+      this.form.district=null;
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.city=item.name;
+      this.form.cityId=val;
+
+    },
+    provinceChange(val){
+      console.log(val)
+      this.city=this.citys.filter(item => item.parentId===val )
+      this.district=[];
+      this.form.city=null;
+      this.form.district=null;
+      var item=this.citys.find((item)=>{
+        return item.cityId==val;
+      })
+      console.log(item)
+      this.form.province=item.name;
+    },
+    getCityList(){
+        getAllList().then(res => {
+          this.loading = false;
+          this.citys=res.data;
+          this.province=res.data.filter(item => item.level===0 )
+        })
+    },
+    init(userId){
+      this.form.userId=userId;
+    },
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          addUserAddress(this.form).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("新增成功");
+              this.$emit("addUserAddress")
+            }
+          });
+        }
+      });
+    },
+  }
+};
+</script>
+<style scoped>
+
+</style>

+ 84 - 0
src/views/hisStore/components/chineseMedicineDetails.vue

@@ -0,0 +1,84 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         中医科普详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 中医科普信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="图片" >
+            <el-image
+                    style="width: 100px"
+                    :src="item.imgUrl"
+                    :preview-src-list="[item.imgUrl]">
+            </el-image>
+          </el-descriptions-item>
+          <el-descriptions-item label="中药名称"><span v-if="item!=null">{{item.medicineName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="是否常见"><span v-if="item!=null"><dict-tag :options="isUsualOptions" :value="item.isUsual"/></span></el-descriptions-item>
+          <el-descriptions-item label="归经"><span v-if="item!=null">{{item.vessel}}</span></el-descriptions-item>
+          <el-descriptions-item label="五味"span="3"><span v-if="item!=null">{{item.flavor}}</span></el-descriptions-item>
+          <el-descriptions-item label="药物作用"span="3"><span v-if="item!=null"><span v-html="item.action"></span></span></el-descriptions-item>
+          <el-descriptions-item label="用药方法" span="3"><span v-if="item!=null"> <span v-html="item.usageMethod"></span></span></el-descriptions-item>
+          <el-descriptions-item label="基本信息" span="3"><span v-if="item!=null"> <span v-html="item.descs"></span></span></el-descriptions-item>
+          <el-descriptions-item label="注意事项" span="3"><span v-if="item!=null"> <span v-html="item.msg"></span></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listChineseMedicine, getChineseMedicine, delChineseMedicine, addChineseMedicine, updateChineseMedicine, exportChineseMedicine } from "@/api/hisStore/chineseMedicine";
+  export default {
+    name: "coupon",
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+      this.getDicts("sys_company_or").then(response => {
+        this.isUsualOptions = response.data;
+      });
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getChineseMedicine(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 119 - 0
src/views/hisStore/components/departmentDetails.vue

@@ -0,0 +1,119 @@
+<template>
+<div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      科室详情
+    </div>
+<div class="contentx" v-if="item!=null">
+      <div class="desct">
+        科室信息
+      </div>
+
+        <el-descriptions title="" :column="3" border>
+            <el-descriptions-item label="科室名称" >
+                <span v-if="item!=null">{{item.deptName}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="科室编码" >
+                <span v-if="item!=null">{{item.deptCode}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="图标" >
+              <el-popover
+                placement="right"
+                title=""
+                trigger="hover">
+                <img slot="reference" :src="item.iconUrl" width="50px">
+                <img :src="item.iconUrl" style="max-width: 150px;">
+              </el-popover>
+
+            </el-descriptions-item>
+            <el-descriptions-item label="排序" >
+                <span v-if="item!=null">{{item.sort}}</span>
+            </el-descriptions-item>
+
+            <el-descriptions-item label="状态" >
+             <span v-if="item!=null">
+                   <dict-tag :options="statusOptions" :value="item.status"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="是否推荐" >
+             <span v-if="item!=null">
+                   <dict-tag :options="isTuiOptions" :value="item.isTui"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建时间" >
+                <span v-if="item!=null">{{item.createTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建者" >
+                <span v-if="item!=null">{{item.createBy}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="更新时间" >
+                <span v-if="item!=null">{{item.updateTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="更新者" >
+                <span v-if="item!=null">{{item.updateBy}}</span>
+            </el-descriptions-item>
+
+
+
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+  import { listDepartment, getDepartment, delDepartment, addDepartment, updateDepartment, exportDepartment } from "@/api/hisStore/department";
+  export default {
+    name: "depdetails",
+    props:["data"],
+    data() {
+      return {
+        statusOptions: [],
+        isTuiOptions: [],
+        item:null,
+        form: {
+          sreason: '',
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+      this.getDicts("sys_company_or").then(response => {
+          this.isTuiOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getDepartment(orderId).then(response => {
+              this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 103 - 0
src/views/hisStore/components/diseaseDetails.vue

@@ -0,0 +1,103 @@
+<template>
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      疾病详情
+    </div>
+<div class="contentx" v-if="item!=null">
+      <div class="desct">
+        疾病信息
+      </div>
+        <el-descriptions title="" :column="3" border>
+            <el-descriptions-item label="疾病id"  >
+                <span v-if="item!=null">{{item.diseaseId}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="疾病名称" >
+                <span v-if="item!=null">{{item.diseaseName}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="疾病编号" >
+                <span v-if="item!=null">{{item.diseaseCode}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属科室" >
+                <span v-if="item!=null">{{item.deptName}}</span>
+            </el-descriptions-item>
+
+
+            <el-descriptions-item label="状态" >
+             <span v-if="item!=null">
+                   <dict-tag :options="statusOptions" :value="item.status"/>
+             </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="创建时间" >
+                <span v-if="item!=null">{{item.createTime}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="简介" span="6">
+                <span v-if="item!=null">{{item.introduction}}</span>
+            </el-descriptions-item>
+
+            <el-descriptions-item label="诊断" span="6">
+                <span v-if="item!=null">{{item.diagnose}}</span>
+            </el-descriptions-item>
+            <el-descriptions-item label="症状" span="6">
+                      <span v-html="item.symptom"></span>
+
+            </el-descriptions-item>
+            <el-descriptions-item label="检验" span="6">
+                      <span v-html="item.inspect"></span>
+            </el-descriptions-item>
+        </el-descriptions>
+    </div>
+    </div>
+</template>
+
+<script>
+  import {getDisease} from '@/api/hisStore/disease';
+  export default {
+    name: "desdetails",
+    props:["data"],
+    data() {
+      return {
+        statusOptions: [],
+        item:null,
+        form: {
+          sreason: '',
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getDisease(orderId).then(response => {
+              this.item = response.data;
+          });
+      },
+    }
+  }
+</script>
+<style>
+
+ .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>

+ 119 - 0
src/views/hisStore/components/doctorArticleDetails.vue

@@ -0,0 +1,119 @@
+<template>
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      文章详情
+    </div>
+    <div class="content" >
+      <div class="desct">
+        文章信息
+      </div>
+      <el-descriptions title="" :column="3" border>
+        <el-descriptions-item label="文章ID"  >
+            <span v-if="item!=null">{{item.articleId}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="封面图" >
+          <el-popover v-if="item!=null"
+            placement="right"
+            title=""
+            trigger="hover">
+            <img slot="reference" :src="item.imageUrl" width="50px">
+            <img :src="item.imageUrl" style="max-width: 150px;">
+          </el-popover>
+        </el-descriptions-item>
+        <el-descriptions-item label="分类" >
+            <dict-tag v-if="item!=null" :options="cateStatus" :value="item.cateId"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="标题" >
+            <span v-if="item!=null">{{item.title}}</span>
+        </el-descriptions-item>
+
+        <el-descriptions-item label="浏览量" >
+            <span v-if="item!=null">{{item.views}}</span>
+        </el-descriptions-item>
+
+        <el-descriptions-item label="状态" >
+        <span v-if="item!=null">
+              <dict-tag :options="articleStatus" :value="item.status"/>
+        </span>
+        </el-descriptions-item>
+        <el-descriptions-item label="创建时间" >
+            <span v-if="item!=null">{{item.createTime}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="更新时间" >
+            <span v-if="item!=null">{{item.updateTime}}</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="内容" >
+            <span v-if="item!=null" v-html="item.content"></span>
+        </el-descriptions-item>
+      </el-descriptions>
+    </div>
+    <div class="content" v-if="item!=null">
+      <div class="desct">
+        视频内容
+      </div>
+      <div style="display: flex; justify-content: center; align-items: center;">
+          <div style="display: grid; place-items: center;">
+             <video  :src="item.videoUrl" controls style="max-width: 400px; max-height: 400px;"></video>
+          </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {getArticle} from "@/api/hisStore/doctorArticle";
+  export default {
+    name: "articledetails",
+    props:["data"],
+    data() {
+      return {
+        cateStatus: [],
+        articleStatus: [],
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+      this.getDicts("sys_doctor_article_cate").then(response => {
+        this.cateStatus = response.data;
+      });
+      this.getDicts("sys_doctor_article_status").then(response => {
+        this.articleStatus = response.data;
+      });
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getArticle(orderId).then(response => {
+              this.item = response.data;
+          });
+      },
+    }
+  }
+</script>
+<style>
+
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>

+ 90 - 0
src/views/hisStore/components/famousPrescribeDetails.vue

@@ -0,0 +1,90 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         经典名方详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 经典名方信息</div>
+        <el-descriptions title="" :column="3" border>
+          <<el-descriptions-item label="图片" >
+              <el-image
+                      style="width: 100px"
+                      :src="item.imgUrl"
+                      :preview-src-list="[item.imgUrl]">
+              </el-image>
+            </el-descriptions-item>
+          <el-descriptions-item label="经典名方名称"><span v-if="item!=null">{{item.prescribeName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="方剂类型"><span v-if="item!=null"> <dict-tag :options="prescribeTypeOptions" :value="item.prescribeType"/></span></el-descriptions-item>
+           <el-descriptions-item label="主治疾病"><span v-if="item!=null">{{item.indication}}</span></el-descriptions-item>
+          <el-descriptions-item label="归属书籍" span="3"><span v-if="item!=null">{{item.belongBook}}</span></el-descriptions-item>
+          <el-descriptions-item label="药物作用"span="3"><span v-if="item!=null"><span v-html="item.action"></span></span></el-descriptions-item>
+          <el-descriptions-item label="用药方法" span="3"><span v-if="item!=null"> <span v-html="item.usageMethod"></span></span></el-descriptions-item>
+          <el-descriptions-item label="基本信息" span="3"><span v-if="item!=null"> <span v-html="item.descs"></span></span></el-descriptions-item>
+          <el-descriptions-item label="注意事项" span="3"><span v-if="item!=null"> <span v-html="item.msg"></span></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listFamousPrescribe, getFamousPrescribe, delFamousPrescribe, addFamousPrescribe, updateFamousPrescribe, exportFamousPrescribe } from "@/api/hisStore/famousPrescribe";
+  export default {
+    name: "prescribeName",
+    data() {
+      return {
+        // 方剂类型字典
+        prescribeTypeOptions: [],
+        // 状态字典
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_famous_prescribe_type").then(response => {
+          this.prescribeTypeOptions = response.data;
+        });
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getFamousPrescribe(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 89 - 0
src/views/hisStore/components/integralGoodsDetails.vue

@@ -0,0 +1,89 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         积分商品详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分商品信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="商品名称"><span v-if="item!=null">{{item.goodsName}}</span></el-descriptions-item>
+          <el-descriptions-item label="封面图"> <el-image v-if="item.imgUrl!=null"
+                  style="width: 100px"
+                  :src="item.imgUrl"
+                  :preview-src-list="[item.imgUrl]">
+              </el-image></el-descriptions-item>
+          <el-descriptions-item label="商品分类"> <dict-tag :options="goodsTypeOptions" :value="item.goodsType"/></el-descriptions-item>
+          <el-descriptions-item label="原价"><span v-if="item!=null">{{item.otPrice}}</span></el-descriptions-item>
+
+
+          <el-descriptions-item label="所需积分"><span v-if="item!=null">{{item.integral}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+          <el-descriptions-item label="库存"><span v-if="item!=null">{{item.stock}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+    <div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分商品信息</div>
+    <span v-html="item.descs"></span>
+    </div>
+
+    </div>
+</template>
+
+<script>
+import { listIntegralGoods, getIntegralGoods, delIntegralGoods, addIntegralGoods, updateIntegralGoods, exportIntegralGoods } from "@/api/hisStore/integralGoods";
+  export default {
+    name: "coupon",
+    data() {
+      return {
+        // 商品分类字典
+        goodsTypeOptions: [],
+        // 状态字典
+        statusOptions: [],
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_integral_goods_type").then(response => {
+          this.goodsTypeOptions = response.data;
+        });
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getIntegralGoods(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 312 - 0
src/views/hisStore/components/integralOrderDetails.vue

@@ -0,0 +1,312 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         积分订单详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 积分订单信息</div>
+        <div class="order-status" v-if="item!=null" >
+                  <el-steps  :active="item.status==3?item.status:item.status-1" align-center finish-status="success">
+                    <el-step title="待发货"></el-step>
+                    <el-step title="待收货"></el-step>
+                    <el-step title="已完成"></el-step>
+                  </el-steps>
+        </div>
+         <el-card shadow="never" style="margin-top: 15px">
+           <div class="operate-container"  v-if="item!=null">
+             <span style="margin-left: 20px" class="color-danger">订单状态:
+                <el-tag prop="status" v-for="(ite, index) in statusOptions"    v-if="item.status==ite.dictValue">{{ite.dictLabel}}</el-tag>
+             </span>
+             <div class="operate-button-container"  v-if="item.status==1" v-hasPermi="['his:integralOrder:sendGoods']">
+                <el-button size="mini" @click="sendVisible=true" >发货</el-button>
+             </div>
+            <div class="operate-button-container"   v-if="item.deliverySn!=null" v-hasPermi="['his:integralOrder:express']">
+              <el-button size="mini" @click="showExpress()" >查看物流</el-button>
+            </div>
+
+            <div class="operate-button-container"  v-hasPermi="['his:integralOrder:edit']">
+              <el-button size="mini" @click="updateOrder()" >修改订单</el-button>
+            </div>
+           </div>
+           <div class="desct">
+            基本信息
+           </div>
+           <el-descriptions title="" :column="3" border>
+             <el-descriptions-item label="订单编号"><span v-if="item!=null">{{item.orderCode}}</span></el-descriptions-item>
+              <el-descriptions-item label="会员ID"><span v-if="item!=null">{{item.userId}}</span></el-descriptions-item>
+             <el-descriptions-item label="会员"><span v-if="item.nickName!=null">{{item.nickName}}({{item.phone}})</span></el-descriptions-item>
+             <el-descriptions-item label="用户名称"><span v-if="item!=null">{{item.userName}}</span></el-descriptions-item>
+             <el-descriptions-item label="用户电话"><span v-if="item!=null">{{item.userPhone}}</span>
+              <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['his:integralOrder:queryPhone']"></el-button>
+            </el-descriptions-item>
+              <el-descriptions-item label="用户地址"><span v-if="item!=null">{{item.userAddress}}</span></el-descriptions-item>
+             <el-descriptions-item label="支付积分"><span v-if="item!=null">{{item.integral}}</span></el-descriptions-item>
+             <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+             <el-descriptions-item label="快递公司编号"><span v-if="item!=null">{{item.deliveryCode}}</span></el-descriptions-item>
+             <el-descriptions-item label="快递名称"><span v-if="item!=null">{{item.deliveryName}}</span></el-descriptions-item>
+             <el-descriptions-item label="快递单号"><span v-if="item!=null">{{item.deliverySn}}</span></el-descriptions-item>
+             <el-descriptions-item label="发货时间"><span v-if="item!=null">{{item.deliveryTime}}</span></el-descriptions-item>
+             <el-descriptions-item label="提交时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+           </el-descriptions>
+         </el-card>
+
+    </div>
+      <div class="contentx" v-if="item!=null" style="padding-bottom: 70px;">
+       <div class="desct">
+           商品信息
+          </div>
+       <el-table
+              border
+              v-if="prod!=null"
+              :data="prod"
+              size="small"
+              style="margin-top: 20px" >
+              <el-table-column label="商品图片"  align="center">
+                <template slot-scope="scope">
+                  <img :src="scope.row.imgUrl" style="height: 80px">
+                </template>
+              </el-table-column>
+              <el-table-column label="商品名称"  align="center">
+                <template slot-scope="scope">
+                  <p>{{scope.row.goodsName}}</p>
+                </template>
+              </el-table-column>
+              <el-table-column label="积分" align="center">
+                <template slot-scope="scope">
+                  <p>¥{{scope.row.integral}}</p>
+                </template>
+              </el-table-column>
+
+            </el-table>
+       </div>
+      <el-dialog
+           width="50%"
+           title="发货"
+           :visible.sync="sendVisible"
+           append-to-body @close="sendCancel">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+          <el-form-item label="快递公司编号" prop="deliveryCode">
+                    <el-input v-model="form.deliveryCode" placeholder="请输入快递公司编号" />
+                  </el-form-item>
+                  <el-form-item label="快递名称" prop="deliveryName">
+                    <el-input v-model="form.deliveryName" placeholder="请输入快递名称" />
+                  </el-form-item>
+                  <el-form-item label="快递单号" prop="deliverySn">
+                    <el-input v-model="form.deliverySn" placeholder="请输入快递单号" />
+                  </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+                          <el-button type="primary" @click="sendGoods">确 定</el-button>
+                          <el-button @click="sendCancel">取 消</el-button>
+        </div>
+
+          </el-dialog>
+
+          <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
+            <el-table style="margin-top: 20px;width: 100%"
+                      ref="orderHistoryTable"
+                      :data="traces" border>
+              <el-table-column label="操作时间"  width="160" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.AcceptTime}}
+                </template>
+              </el-table-column>
+               <el-table-column label="位置" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.Location}}
+                </template>
+              </el-table-column>
+              <el-table-column label="描述" align="center">
+                <template slot-scope="scope">
+                  {{scope.row.AcceptStation}}
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-dialog>
+
+          <el-dialog :title="editOrder.title" :visible.sync="editOrder.open" width="600px" append-to-body>
+            <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
+              <el-form-item label="订单状态" prop="status" >
+                <el-select v-model="editForm.status" placeholder="请选择状态" clearable size="small" filterable>
+                    <el-option
+                      v-for="dict in statusOptions "
+                      :key="dict.dictValue"
+                      :label="dict.dictLabel"
+                      :value="dict.dictValue"
+                    />
+                  </el-select>
+                </el-form-item>
+              <el-form-item label="详情地址" prop="userAddress"  >
+                <el-input v-model="editForm.userAddress" placeholder="请输入" />
+              </el-form-item>
+              <el-form-item label="备注" prop="remark"  >
+                <el-input v-model="editForm.remark" placeholder="请输入备注" />
+              </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitEditForm">确 定</el-button>
+            </div>
+          </el-dialog>
+    </div>
+</template>
+
+<script>
+import {getExpress, listIntegralOrder, sendgoods,getIntegralOrder, delIntegralOrder, addIntegralOrder, updateIntegralOrder, exportIntegralOrder,getOrderUserPhone } from "@/api/hisStore/integralOrder";
+  export default {
+    name: "integralOrder",
+    data() {
+      return {
+        expressDialog:{
+          title:"物流信息",
+          open:false,
+        },
+        editOrder:{
+          title:"修改订单",
+          open:false,
+        },
+        editForm:{
+          orderId:null,
+          status:null,
+          userAddress:null,
+          remark:"",
+        },
+        editRules:{},
+        item:null,
+        express:null,
+        traces:[],
+        rules:{
+      deliveryCode: [
+        { required: true, message: '请输入快递公司编号', trigger: 'blur' }
+      ],
+      deliveryName: [
+        { required: true, message: '请输入快递名称', trigger: 'blur' }
+      ],
+      deliverySn: [
+        { required: true, message: '请输入快递单号', trigger: 'blur' }
+      ]
+    },
+        sendVisible:false,
+        form: {
+          deliveryCode: null,
+          deliveryName:null,
+          deliverySn:null,
+          orderId:null,
+        }
+      }
+    },
+    created() {
+      this.getDicts("sys_integral_order_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      handlePhone(){
+        const orderId = this.item.orderId;
+        getOrderUserPhone(orderId).then(response =>{
+            this.item.userPhone = response.userPhone;
+        })
+      },
+      updateOrder(){
+        this.editOrder.open=true;
+        this.editForm.orderId=this.item.orderId;
+        this.editForm.remark=this.item.remark;
+        this.editForm.status = this.item.status.toString();
+        this.editForm.userAddress = this.item.userAddress.toString();
+      },
+     //修改订单状态
+     submitEditForm(){
+        this.$refs["editForm"].validate(valid => {
+        if (valid) {
+          updateIntegralOrder(this.editForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.editOrder.open = false;
+              this.getDetails(this.item.orderId);
+              }
+            });
+          }
+        });
+      },
+      sendCancel(){
+           this.sendVisible = false;
+           this.form={
+             deliveryCode: null,
+             deliveryName:null,
+             deliverySn:null,
+             orderId:null,
+           }
+      },
+      showExpress(){
+        this.expressDialog.open=true;
+        getExpress(this.item.orderId).then(response => {
+            this.express = response.data;
+            if(this.express!=null&&this.express.Traces!=null){
+                this.traces=this.express.Traces
+            }
+        });
+      },
+          sendGoods(){
+              this.form.orderId=this.item.orderId;
+              sendgoods(this.form).then(response => {
+                    this.msgSuccess("修改成功");
+                    this.sendVisible = false;
+                    getIntegralOrder(this.item.orderId).then(response => {
+                        this.item = response.data;
+                        this.$parent.$parent.getList();
+                    });
+
+                    this.form={
+                    deliveryCode: null,
+                    deliveryName:null,
+                    deliverySn:null,
+                    orderId:null,
+                  }
+              });
+            },
+      getDetails(orderId) {
+        this.item=null;
+        getIntegralOrder(orderId).then(response => {
+            this.item = response.data;
+            this.prod=[JSON.parse(this.item.itemJson)];
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+.order-content{
+  margin: 10px;
+
+}
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+</style>

+ 80 - 0
src/views/hisStore/components/medicatedFoodDetails.vue

@@ -0,0 +1,80 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         药膳详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 药膳信息</div>
+        <el-descriptions title="" :column="3" border>
+          <<el-descriptions-item label="图片" >
+              <el-image
+                      style="width: 100px"
+                      :src="item.imgUrl"
+                      :preview-src-list="[item.imgUrl]">
+              </el-image>
+            </el-descriptions-item>
+          <el-descriptions-item label="药膳名称"><span v-if="item!=null">{{item.foodName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+           <el-descriptions-item label="功效"><span v-if="item!=null">{{item.action}}</span></el-descriptions-item>
+          <el-descriptions-item label="食材"><span v-if="item!=null">{{item.food}}</span></el-descriptions-item>
+
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="主治疾病" span="3"><span v-if="item!=null" >{{item.indications}}</span></el-descriptions-item>
+          <el-descriptions-item label="描述" span="3"><span v-if="item!=null" > <span v-html="item.descs"></span></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listMedicatedFood, getMedicatedFood, delMedicatedFood, addMedicatedFood, updateMedicatedFood, exportMedicatedFood } from "@/api/hisStore/medicatedFood";
+  export default {
+    name: "MedicatedFoodDetails",
+    data() {
+      return {
+        item:null,
+      }
+    },
+    created() {
+        this.getDicts("sys_company_status").then(response => {
+          this.statusOptions = response.data;
+        });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getMedicatedFood(orderId).then(response => {
+            this.item = response.data;
+
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 369 - 0
src/views/hisStore/components/offlineOrder.vue

@@ -0,0 +1,369 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="order!=null" >
+          <el-steps  :active="order.status===3?order.status+1:order.status" align-center>
+            <el-step title="客服制单"></el-step>
+            <el-step title="待业务核实"></el-step>
+            <el-step title="待主管审核"></el-step>
+            <el-step title="内勤对流向"></el-step>
+          </el-steps>
+      </div>
+      <div>
+
+      <el-card shadow="never" style="margin-top: 15px">
+      <div class="operate-container"  v-if="order!=null">
+        <span  style="margin-left: 20px" class="color-danger">订单状态:
+           <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="order.status.toString()===item.dictValue">{{item.dictLabel}}</el-tag>
+        </span>
+
+        <div class="operate-button-container" >
+          <el-button size="mini" v-if="order.status ===2" @click="handleAudit()"  v-hasPermi="['store:storeOrderOffline:audit']" >主管审核</el-button>
+        </div>
+      </div>
+      <div style="margin: 20px 0px"  v-if="order!=null">
+        <span class="font-small">
+          基本信息
+        </span>
+      </div>
+      <el-descriptions :column="4" border  >
+        <el-descriptions-item label="订单ID"  >
+                <span v-if="order!=null">
+                  {{order.orderId}}
+                </span>
+        </el-descriptions-item>
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="order!=null">
+                  {{order.orderCode}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="客户名称"  >
+                <span v-if="order!=null">
+                  {{order.customerName}}
+                </span>
+            </el-descriptions-item>
+
+
+            <el-descriptions-item label="客户电话"  >
+                <span v-if="order!=null ">
+                  {{order.mobile }}
+                </span>
+                <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrderOffline:queryPhone']"></el-button>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="order!=null " label="应付金额"  >
+                <span >
+                  {{order.payPrice }}
+                </span>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="order!=null " label="实付金额"  >
+                <span >
+                  {{order.payMoney }}
+                </span>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="customerInfo!=null " label="客户编码"  >
+                <span >
+                  {{customerInfo.customerCode }}
+                </span>
+              </el-descriptions-item>
+            <el-descriptions-item label="创建时间"  >
+                <span v-if="order!=null ">
+                  {{order.createTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属客服"  >
+                <span v-if="order!=null ">
+                  {{order.companyUserName }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属部门"  >
+              <span v-if="order!=null ">
+                {{order.companyName }}
+              </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="所属业务员"  >
+              <span v-if="order!=null ">
+                {{order.uploadUserName }}
+              </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="凭证上传时间"  >
+                  <span v-if="order!=null ">
+                    {{order.uploadTime }}
+                  </span>
+            </el-descriptions-item>
+        <el-descriptions-item label="审核人"  >
+                  <span v-if="order!=null ">
+                    {{order.auditBy }}
+                  </span>
+        </el-descriptions-item>
+        <el-descriptions-item label="审核时间"  >
+                  <span v-if="order!=null ">
+                    {{order.auditTime }}
+                  </span>
+        </el-descriptions-item>
+            <el-descriptions-item label="备注"  >
+                <span v-if="order!=null ">
+                  {{order.remark }}
+                </span>
+            </el-descriptions-item>
+
+
+
+      </el-descriptions>
+      <div style="margin: 20px 0px"  v-if="certificates!=null">
+        <span class="font-small">
+          凭证信息
+        </span>
+      </div>
+      <el-image
+          v-if="this.certificates != null"
+          :src="certificates"
+          :preview-src-list="[certificates]"
+          :style="{ width: '100px', height: '100px' }"
+          @click.native="showImageDialog"
+        ></el-image>
+        <el-dialog :visible.sync="dialogVisibleImage" width="10%">
+          <img :src="certificates" style="width: 100%" alt="">
+        </el-dialog>
+
+      <div style="margin-top: 20px">
+        <span class="font-small">商品信息</span>
+      </div>
+      <el-table
+        border
+        v-if="items!=null"
+        :data="items"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+        <el-table-column label="商品图片" width="150" align="center">
+          <template slot-scope="scope">
+            <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+          </template>
+        </el-table-column>
+        <el-table-column label="商品名称" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="单价" width="240" align="center">
+          <template slot-scope="scope">
+            <p>¥{{JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="规格" width="240" align="center">
+          <template slot-scope="scope">
+            {{JSON.parse(scope.row.jsonInfo).sku}}
+          </template>
+        </el-table-column>
+        <el-table-column label="数量" width="180" align="center">
+          <template slot-scope="scope">
+            {{scope.row.num}}
+          </template>
+        </el-table-column>
+<!--        <el-table-column label="小计"  align="center">-->
+<!--          <template slot-scope="scope" >-->
+<!--            ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+      </el-table>
+<!--      <div style="float: right;margin: 20px" v-if="order!=null">-->
+<!--        合计:<span class="color-danger">¥{{order.totalPrice.toFixed(2)}}</span>-->
+<!--      </div>-->
+      </el-card>
+    </div>
+    <el-dialog :title="certificateDialig.title" :visible.sync="certificateDialig.open" append-to-body>
+      <el-form ref="certificateForm" :model="certificateForm" :rules="certificateRules" label-width="100px">
+        <el-form-item label="凭证" prop="certificates">
+          <ImageUpload v-model="photoArr" type="image" :limit="1" :width="150" :height="150" />
+        </el-form-item>
+        <el-form-item label="实付金额" prop="payPrice">
+          <el-input-number v-model="certificateForm.payMoney"  size="mini"    ></el-input-number>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleConfirm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+      :append-to-body="true"
+      size="75%"
+      :title="customer.title" :visible.sync="customer.open" append-to-body
+      >
+        <customer-details  ref="customerDetails" />
+    </el-drawer>
+
+  </div>
+</template>
+
+<script>
+import { listStoreOrderOffline, getStoreOrderOffline,auditOrder,getPhone } from "@/api/hisStore/storeOrderOffline";
+import ImageUpload from '@/components/ImageUpload'
+import customerDetails from '../../crm/components/customerDetails.vue';
+export default {
+  name: "offlineOrder",
+  components: {customerDetails,
+    ImageUpload},
+  data() {
+    return {
+      customerUserStatusOptions:[],
+      scheduleOptions:[],
+      dialogVisibleImage: false,
+      customerInfo:null,
+      customer:{
+        title:"客户详情",
+        open:false,
+      },
+      photoArr:null,
+      certificateDialig:{
+        title:"上传凭证",
+        open:false,
+      },
+      certificateForm:{
+        payMoney:null,
+        certificates:null,
+      },
+      addSms:{
+        open:false,
+        title:"发短信"
+      },
+      certificateRules:{
+        certificates:[
+          { required: true, message: "凭证不能为空", trigger: "change" }
+        ]
+      },
+      customers:[],
+
+      orderId:null,
+      statusOptions:[],
+      certificates:null,
+      order:null,
+      user:{},
+      logs:[],
+      items:[],
+      express:[],
+      traces:[],
+      payments:[],
+    };
+  },
+  created() {
+    this.getDicts("crm_customer_user_status").then((response) => {
+            this.customerUserStatusOptions = response.data;
+        });
+    this.getDicts("sys_order_offline_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+
+  },
+  computed: {
+  },
+  methods: {
+
+    handlePhone(){
+        const id = this.orderId;
+        getPhone(id).then(response =>{
+          this.order.mobile = response.userPhone;
+        })
+      },
+
+    showImageDialog() {
+      this.dialogVisible = true;
+    },
+    handleCustomer(){
+      var that=this;
+      this.customer.open = true;
+      setTimeout(() => {
+          that.$refs.customerDetails.getDetails(this.order.crmId);
+      }, 200);
+    },
+    handleCertificates(){
+      this.certificateDialig.open = true;
+      this.photoArr = null;
+    },
+    handleConfirm(){
+      this.certificateForm.orderId = this.orderId;
+      this.certificateForm.certificates = this.photoArr;
+      uploadCredentials(this.certificateForm).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("上传成功");
+                this.certificateDialig.open = false;
+                this.getOfflineOrder(this.orderId);
+              }
+            });
+    },
+    getOfflineOrder(orderId){
+      this.order = null;
+      this.orderId=orderId;
+      this.certificates = null;
+      getStoreOrderOffline(orderId).then(response => {
+            this.order = response.order;
+            if(response.order.certificates != null){
+              this.certificates = response.order.certificates;
+            }
+            this.items = response.items;
+            this.customerInfo=response.customer;
+        });
+     },
+    /** 审核按钮操作 */
+    handleAudit() {
+      this.$confirm('是否确认审核线下订单编号为"' + this.orderId + '"的数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        return auditOrder(this.orderId);
+      }).then(() => {
+        this.getOfflineOrder(this.orderId);
+        this.msgSuccess("审核成功");
+      }).catch(() => {});
+    }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+}
+.detail-container {
+  width: 80%;
+  padding: 20px 20px 20px 20px;
+  margin: 20px auto;
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+
+.table-layout {
+  margin-top: 20px;
+  border-left: 1px solid #DCDFE6;
+  border-top: 1px solid #DCDFE6;
+}
+
+.table-cell {
+  height: 60px;
+  line-height: 40px;
+  border-right: 1px solid #DCDFE6;
+  border-bottom: 1px solid #DCDFE6;
+  padding: 10px;
+  font-size: 14px;
+  color: #606266;
+  text-align: center;
+  overflow: hidden;
+}
+
+.table-cell-title {
+  border-right: 1px solid #DCDFE6;
+  border-bottom: 1px solid #DCDFE6;
+  padding: 10px;
+  background: #F2F6FC;
+  text-align: center;
+  font-size: 14px;
+  color: #303133;
+}
+</style>

+ 398 - 0
src/views/hisStore/components/productAfterSalesOrder.vue

@@ -0,0 +1,398 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="afterSales!=null" >
+          <el-steps  :active="afterSales.status==4?afterSales.status+1:afterSales.status" align-center>
+            <el-step title="待审核(24小时自动审核)"></el-step>
+            <el-step title="平台已审核等待用户发货"></el-step>
+            <el-step title="用户已发货待仓库审核"></el-step>
+            <el-step title="财务审核"></el-step>
+            <el-step title="退款成功"></el-step>
+          </el-steps>
+      </div>
+      <div v-if="afterSales!=null">
+      <el-card shadow="never" style="margin-top: 15px">
+        <div class="operate-container">
+          <span style="margin-left: 20px" class="color-danger">售后状态:
+            <el-tag prop="status" v-for="(item, index) in salesStatusOptions"    v-if="afterSales.salesStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+          </span>
+          <div class="operate-button-container"  >
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:edit']" v-show="afterSales.salesStatus==0&&afterSales.status===1"  @click="addDelivery">编辑物流</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:audit1']" v-show="afterSales.salesStatus==0&&afterSales.status===0" @click="handleAudit1">平台审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:audit2']" v-show="afterSales.salesStatus==0&&afterSales.status===2" @click="handleAudit2">仓库审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:refund']" @click="handleRefund"  v-show="afterSales.salesStatus==0&&afterSales.status===3">财务审核</el-button>
+            <el-button size="mini"  v-hasPermi="['store:storeAfterSales:cancel']" @click="cancel"  v-show="afterSales.salesStatus==0">撤销</el-button>
+            <el-button size="mini"  @click="showOrder">查看订单</el-button>
+         </div>
+        </div>
+        <div style="margin: 20px 0px">
+          <span class="font-small">基本信息</span>
+        </div>
+        <el-descriptions   :column="4" border  >
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.orderCode}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="会员"  >
+                <span v-if="user!=null">
+                  {{user.nickname}}({{user.phone}})
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="退款金额"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.refundAmount}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="申请类型"  >
+                <span v-if="afterSales!=null">
+                  <el-tag  v-for="(item, index) in serviceTypeOptions"    v-if="afterSales.serviceType==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="申请原因"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.reasons}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="说明"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.explains}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="状态"  >
+                <span v-if="afterSales!=null">
+                  <el-tag   v-for="(item, index) in statusOptions"    v-if="afterSales.status==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="售后状态"  >
+                <span v-if="afterSales!=null">
+                  <el-tag  v-for="(item, index) in salesStatusOptions"    v-if="afterSales.salesStatus==item.dictValue" >{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+
+        </el-descriptions>
+        <div style="margin: 20px 0px">
+          <span class="font-small">收货信息</span>
+        </div>
+        <el-descriptions   :column="4" border  >
+            <el-descriptions-item label="收货人"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.consignee}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货人"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.consignee}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="手机号码"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.phoneNumber}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货地址"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.address}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递公司"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.deliveryName}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="运单号"  >
+                <span v-if="afterSales!=null">
+                  {{afterSales.deliverySn}}
+                </span>
+            </el-descriptions-item>
+        </el-descriptions>
+        <div style="margin-top: 20px">
+          <span class="font-small">商品信息</span>
+        </div>
+        <el-table
+          border
+          :data="items"
+          size="small"
+          style="width: 100%;margin-top: 20px" >
+          <el-table-column label="商品图片" width="150" align="center">
+            <template slot-scope="scope">
+              <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+            </template>
+          </el-table-column>
+          <el-table-column label="商品名称" width="300" align="center">
+            <template slot-scope="scope">
+              <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+            </template>
+          </el-table-column>
+          <el-table-column label="价格" width="240" align="center">
+            <template slot-scope="scope">
+              <p>价格:¥{{JSON.parse(scope.row.jsonInfo).price}}</p>
+
+            </template>
+          </el-table-column>
+          <el-table-column label="属性" width="240" align="center">
+            <template slot-scope="scope">
+              {{JSON.parse(scope.row.jsonInfo).sku}}
+            </template>
+          </el-table-column>
+          <el-table-column label="数量" width="180" align="center">
+            <template slot-scope="scope">
+                {{scope.row.num}}
+            </template>
+          </el-table-column>
+          <el-table-column label="小计"  align="center">
+            <template slot-scope="scope">
+              ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price}}
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top: 20px">
+          <svg-icon icon-class="marker" style="color: #606266"></svg-icon>
+          <span class="font-small">操作信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  ref="orderHistoryTable"
+                  :data="logs" border>
+          <el-table-column label="操作时间"  width="160" align="center">
+            <template slot-scope="scope">
+              {{scope.row.changeTime}}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{scope.row.changeMessage}}
+            </template>
+          </el-table-column>
+          <el-table-column label="操作员" align="center">
+            <template slot-scope="scope">
+              {{scope.row.operator}}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+
+    </div>
+    <el-dialog :title="audit.title" :visible.sync="audit.open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="退款金额" prop="refundAmount"  >
+          <el-input-number v-model="form.refundAmount" :min="0"  />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitAuditForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+    :append-to-body="true"
+     size="75%"
+      :title="show.title" :visible.sync="show.open"
+      >
+      <product-order  ref="productOrder" />
+    </el-drawer>
+    <el-dialog :title="add.title" :visible.sync="add.open" width="500px" append-to-body>
+
+      <div slot="footer" class="dialog-footer">
+        <el-form ref="addForm" :model="addForm" :rules="addRules" label-width="100px">
+          <el-form-item label="id" prop="id" v-if="false">
+            <el-input v-model="addForm.id" placeholder="请输入"  />
+          </el-form-item>
+          <el-form-item label="快递公司" prop="deliveryName">
+            <el-input v-model="addForm.deliveryName" placeholder="请输入"  />
+          </el-form-item>
+          <el-form-item label="运单号" prop="deliverySn">
+            <el-input v-model="addForm.deliverySn" placeholder="请输入"  />
+          </el-form-item>
+        </el-form>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel1">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {getStoreAfterSales,cancel,refund,audit1,audit2,updateStoreAfterSales} from "@/api/hisStore/storeAfterSales";
+
+import productOrder from "./productOrder";
+export default {
+  components: { productOrder },
+  name: "order",
+  data() {
+    return {
+      show:{
+        open:false,
+        title:"订单详情"
+      },
+      audit:{
+          title:"财务审核",
+          open:false,
+      },
+      add:{
+        open:false,
+        title:"添加物流"
+      },
+      addForm:{
+        id:null,
+        deliveryName:null,
+        deliverySn:null
+      },
+      addRules:{
+        deliveryName: [
+          { required: true, message: "物流名称不能为空", trigger: "blur" }
+        ],
+        deliverySn: [
+          { required: true, message: "物流单号不能为空", trigger: "blur" }
+        ],
+      },
+      order:null,
+      user:null,
+      serviceTypeOptions:[],
+      salesStatusOptions:[],
+      statusOptions:[],
+      afterSales:null,
+      items:[],
+      logs:[],
+      form:{
+        refundAmount:0,
+      },
+      rules:{
+        status: [
+          { required: true, message: "状态不能为空", trigger: "blur" }
+        ],
+        refundAmount: [
+          { required: true, message: "退款金额不能为空", trigger: "blur" }
+        ],
+      }
+
+    };
+  },
+  created() {
+    this.getDicts("store_after_sales_sales_status").then((response) => {
+        this.salesStatusOptions = response.data;
+    });
+    this.getDicts("store_after_sales_status").then((response) => {
+        this.statusOptions = response.data;
+    });
+     this.getDicts("store_after_sales_service_type").then((response) => {
+        this.serviceTypeOptions = response.data;
+    });
+  },
+  methods: {
+    submitForm() {
+      var id=this.afterSales.id;
+      this.addForm.id = id;
+      updateStoreAfterSales(this.addForm).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("编辑成功");
+                this.add.open = false;
+                this.getStoreAfterSales(id);
+              }
+            });
+    },
+    cancel1(){
+      this.add.open = false;
+    },
+    addDelivery(){
+      this.add.open = true;
+      this.addForm.deliveryName = this.afterSales.deliveryName;
+      this.addForm.deliverySn = this.afterSales.deliverySn;
+    },
+    showOrder(){
+      this.show.open=true;
+      const orderId = this.order.id ;
+      setTimeout(() => {
+        this.$refs.productOrder.getOrder(orderId);
+      }, 500);
+    },
+    handleAudit1(){
+      var id=this.afterSales.id;
+      this.$confirm('确定审请通过?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={salesId:id}
+          return audit1(data);
+        }).then(() => {
+          this.getStoreAfterSales(id);
+          this.msgSuccess("操作成功");
+        }).catch(function() {});
+
+    },
+    handleAudit2(){
+      var id=this.afterSales.id;
+      this.$confirm('确定审请通过?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={salesId:id}
+          return audit2(data);
+        }).then(() => {
+          this.getStoreAfterSales(id);
+          this.msgSuccess("操作成功");
+        }).catch(function() {});
+
+    },
+    handleRefund(){
+        this.audit.open=true;
+        this.form.salesId=this.afterSales.id;
+        this.form.refundAmount=this.afterSales.refundAmount;
+    },
+    submitAuditForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          refund(this.form).then(response => {
+              if (response.code === 200) {
+                this.audit.open = false;
+                this.getStoreAfterSales(this.afterSales.id);
+                this.msgSuccess("操作成功");
+              }
+            });
+        }
+      });
+    },
+    cancel(){
+      var id=this.afterSales.id;
+      this.$prompt('是否确定取消订单?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      }).then(({ value }) => {
+        var data={salesId:id,remark:value};
+        return cancel(data);
+      }).then(() => {
+        this.getStoreAfterSales(id);
+        this.msgSuccess("操作成功");
+      }).catch(() => {
+
+      });
+    },
+    getStoreAfterSales(id){
+        getStoreAfterSales(id).then(response => {
+            this.afterSales = response.afterSales;
+            this.logs = response.logs;
+            this.items = response.items;
+            this.user=response.user;
+            this.order=response.order;
+        });
+     }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+
+</style>

+ 114 - 0
src/views/hisStore/components/productAttrValueSelect.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="product-select" >
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="商品名称" prop="productName">
+        <el-input
+          style="width:200px"
+          v-model="queryParams.productName"
+          placeholder="请输入商品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table border v-loading="loading" :data="list">
+      <el-table-column label="商品编号" align="center" prop="barCode" />
+      <el-table-column label="商品图片" align="center" width="100">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.image" width="80">
+            <img :src="scope.row.image" style="max-width: 80px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+      <el-table-column label="商品规格" align="center" prop="sku" />
+      <el-table-column label="库存" align="center" prop="stock" />
+      <el-table-column label="单价" align="center" prop="price" />
+      <el-table-column label="操作" align="center" width="100px" >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleSelect(scope.row)"
+          >选择</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      style="padding-bottom:10px;"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { getStoreProductAttrValueList } from "@/api/hisStore/storeProduct";
+export default {
+  name: "selectProduct",
+  props: {
+    companyId:{
+      type: Number,
+      default: null
+    }
+  },
+  data() {
+    return {
+      loading: true,
+      list:[],
+      total: 0,
+      queryParams: {
+        productName:"",
+        pageNum: 1,
+        pageSize: 10,
+        isPackage:0,
+        companyId: this.companyId
+      }
+    };
+  },
+  created() {
+     this.getList();
+  },
+  methods: {
+    getData(isPackage){
+      this.queryParams.isPackage=isPackage;
+      this.getList();
+
+    },
+    handleSelect(row){
+      this.$emit('selectProduct',row);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    getList(){
+      this.loading = true;
+      getStoreProductAttrValueList(this.queryParams).then(response => {
+        this.list = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    }
+  }
+};
+</script>
+<style scoped>
+
+.product-select{
+  padding-bottom: 15px;
+}
+</style>

+ 860 - 0
src/views/hisStore/components/productOrder.vue

@@ -0,0 +1,860 @@
+<template>
+  <div class="order-content">
+      <div class="order-status" v-if="order!=null" >
+          <el-steps  :active="order.status==3?order.status+1:order.status" align-center>
+            <el-step title="待支付"></el-step>
+            <el-step title="待发货"></el-step>
+            <el-step title="待收货"></el-step>
+            <el-step title="交易完成"></el-step>
+          </el-steps>
+      </div>
+      <div>
+      <el-card shadow="never" style="margin-top: 15px">
+      <div class="operate-container"  v-if="order!=null">
+        <span style="margin-left: 20px" class="color-danger">订单状态:
+           <el-tag prop="status" v-for="(item, index) in statusOptions"   v-if="order.status==item.dictValue">{{item.dictLabel}}</el-tag>
+        </span>
+        <div class="operate-button-container" >
+          <el-button size="mini" @click="editOrder()"  v-hasPermi="['store:storeOrder:edit']" >修改订单</el-button>
+        </div>
+        <div class="operate-button-container"  v-hasPermi="['store:storeOrder:finishOrder']" v-if="order.status===2">
+          <el-button size="mini" @click="finishOrder()" >确认收货</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.status==1||order.status==2"  v-hasPermi="['store:storeOrder:refundOrderMoney']"  >
+          <el-button size="mini" @click="refundOrderMoney()" >退款</el-button>
+        </div>
+        <div class="operate-button-container"  v-hasPermi="['store:storeOrder:express']"  >
+          <el-button size="mini" @click="showExpress()" >查看物流</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.tuiMoneyStatus==0"  v-hasPermi="['store:storeOrder:editTuiMoney']"  >
+          <el-button size="mini" @click="editTuiMoney1()" >解冻</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.tuiMoneyStatus==1"  v-hasPermi="['store:storeOrder:editTuiMoney']"  >
+          <el-button size="mini" @click="editTuiMoney2()" >冻结</el-button>
+        </div>
+
+        <div class="operate-button-container" v-if="order.status==3&&order.tuiMoneyStatus==null"  v-hasPermi="['store:storeOrder:addTuiMoney']"  >
+          <el-button size="mini" @click="addTuiMoney()" >分佣</el-button>
+        </div>
+
+        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
+          <el-button size="mini" @click="showErpOrder()" >查看ERP订单信息</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.isPayRemain!=null&&order.isPayRemain==1"  v-hasPermi="['store:storeOrder:auditPayRemain']"  >
+          <el-button size="mini" @click="auditPayRemain()" >尾款审核</el-button>
+        </div>
+        <div class="operate-button-container" >
+          <el-button size="mini" @click="editDelivery()"  v-hasPermi="['store:storeOrder:editDeliveryId']" >修改物流</el-button>
+        </div>
+        <div class="operate-button-container" v-if="order.status >=1 && order.extendOrderId == null && order.deliveryId == null"  v-hasPermi="['store:storeOrder:createErpOrder']"  >
+          <el-button size="mini" @click="addErpOrder()" >创建ERP订单信息</el-button>
+        </div>
+        <!-- <div class="operate-button-container" v-show="order.status===2">
+          <el-button size="mini"  >去发货</el-button>
+          <el-button size="mini" >备注订单</el-button>
+        </div>
+        <div class="operate-button-container" v-show="order.status===4">
+          <el-button size="mini"  >订单跟踪</el-button>
+          <el-button size="mini"  disabled>备注订单</el-button>
+        </div> -->
+      </div>
+      <div style="margin: 20px 0px">
+        <span class="font-small">基本信息</span>
+      </div>
+      <el-descriptions :column="4" border  >
+            <el-descriptions-item label="订单编号"  >
+                <span v-if="order!=null">
+                  {{order.orderCode}}
+                </span>
+                <el-tag  v-for="(item, index) in createTypeOptions"    v-if="order!=null&&order.orderCreateType==item.dictValue">{{item.dictLabel}}
+                </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="会员"  >
+                <span v-if="user!=null">
+                  {{user.nickname}}({{user.phone}})
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="支付方式"  >
+              <el-tag prop="payType" v-for="(item, index) in payTypeOptions"    v-if="order!=null&&order.payType==item.dictValue">{{item.dictLabel}}
+              </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="订单类型"  >
+              <el-tag prop="orderType" v-for="(item, index) in orderTypeOptions"    v-if="order!=null&&order.orderType==item.dictValue">{{item.dictLabel}}</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流公司编号"  >
+                <span v-if="order!=null">
+                  {{order.deliverySn}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流公司名称"  >
+                <span v-if="order!=null">
+                  {{order.deliveryName}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流单号"  >
+                <span v-if="order!=null">
+                  {{order.deliveryId}}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流状态"  >
+                <span v-if="order!=null">
+                  <el-tag prop="deliveryId" v-for="(item, index) in deliveryStatusOptions"    v-if="order!=null&&order.deliveryStatus==item.dictValue">{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流跟踪状态"  >
+                <span v-if="order!=null">
+                  <el-tag prop="deliveryId" v-for="(item, index) in deliveryTypeOptions"    v-if="order!=null&&order.deliveryType==item.dictValue">{{item.dictLabel}}</el-tag>
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="物流结算费用"  >
+                <span v-if="order!=null&&order.deliveryPayMoney!=null ">
+                  {{order.deliveryPayMoney.toFixed(2) }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递帐单日期"  >
+                <span v-if="order!=null ">
+                  {{order.deliveryTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="快递结算日期"  >
+                <span v-if="order!=null ">
+                  {{order.deliveryPayTime }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="推广佣金"  >
+                <span v-if="order!=null ">
+                  {{order.tuiMoney }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货人"  >
+                <span v-if="order!=null ">
+                  {{order.realName }}
+                </span>
+            </el-descriptions-item>
+            <el-descriptions-item label="手机号码"  >
+                <span v-if="order!=null ">
+                  {{order.userPhone }}
+                </span>
+                <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrder:queryPhone']"></el-button>
+            </el-descriptions-item>
+            <el-descriptions-item label="收货地址"  >
+              <el-popover
+                v-if="order!=null"
+                placement="top-start"
+                title="收货地址"
+                width="300"
+                trigger="hover"
+                :content="order.userAddress">
+                <span slot="reference">{{order.userAddress}}</span>
+                <el-button icon="el-icon-search" size="mini" @click="handleAddress()" style="margin-left: 20px;" circle v-hasPermi="['store:storeOrder:queryAddress']"></el-button>
+              </el-popover>
+            </el-descriptions-item>
+            <el-descriptions-item label="档期归属"  >
+              <el-tag prop="scheduleId" v-for="(item, index) in scheduleOptions"    v-if="order!=null&&order.scheduleId==item.id">{{item.name}}
+              </el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item label="用户备注"  >
+                <span v-if="order!=null">
+                  {{order.mark}}
+                </span>
+            </el-descriptions-item>
+      </el-descriptions>
+      <div style="margin: 20px 0px"  v-if="order!=null">
+        <span class="font-small">
+          凭证信息
+        </span>
+      </div>
+      <el-image
+          v-if="certificates != null"
+          :src="certificates"
+          :preview-src-list="[certificates]"
+          :style="{ width: '100px', height: '100px' }"
+          @click.native="showImageDialog"
+        ></el-image>
+        <el-dialog :visible.sync="dialogVisibleImage" width="10%">
+          <img :src="certificates" style="width: 100%" alt="">
+        </el-dialog>
+      <div style="margin-top: 20px">
+        <span class="font-small">商品信息</span>
+      </div>
+      <el-table
+        border
+        v-if="items!=null"
+        :data="items"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+        <el-table-column label="商品图片" width="150" align="center">
+          <template slot-scope="scope">
+            <img :src="JSON.parse(scope.row.jsonInfo).image" style="height: 80px">
+          </template>
+        </el-table-column>
+        <el-table-column label="商品编码" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).barCode}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="商品组合编码" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).groupBarCode}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="商品名称" width="300" align="center">
+          <template slot-scope="scope">
+            <p>{{JSON.parse(scope.row.jsonInfo).productName}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="单价" width="240" align="center">
+          <template slot-scope="scope">
+            <p>¥{{JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="规格" width="240" align="center">
+          <template slot-scope="scope">
+            {{JSON.parse(scope.row.jsonInfo).sku}}
+          </template>
+        </el-table-column>
+        <el-table-column label="数量" width="180" align="center">
+          <template slot-scope="scope">
+            {{scope.row.num}}
+          </template>
+        </el-table-column>
+        <el-table-column label="处方药" width="240" align="center">
+          <template slot-scope="scope">
+            {{scope.row.isPrescribe!=null&&scope.row.isPrescribe==1?'是':'否'}}
+          </template>
+        </el-table-column>
+        <el-table-column label="小计"  align="center">
+          <template slot-scope="scope" >
+            ¥{{scope.row.num*JSON.parse(scope.row.jsonInfo).price.toFixed(2)}}
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="float: right;margin: 20px" v-if="order!=null">
+        合计:<span class="color-danger">¥{{order.totalPrice.toFixed(2)}}</span>
+      </div>
+      <div style="margin: 60px 0px 20px 0px">
+        <span class="font-small">费用信息</span>
+      </div>
+      <el-descriptions   :column="4" border  >
+          <el-descriptions-item label="商品合计"  >
+              <span v-if="order!=null">
+                ¥{{order.totalPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="应付金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="运费"  >
+              <span v-if="order!=null">
+                ¥{{order.payPostage.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="优惠券"  >
+              <span v-if="order!=null">
+                ¥{{order.couponPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="积分抵扣"  >
+              <span v-if="order!=null">
+                ¥{{order.deductionPrice.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="实付金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payMoney.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="代收金额"  >
+              <span v-if="order!=null">
+                ¥{{order.payDelivery.toFixed(2)}}
+              </span>
+          </el-descriptions-item>
+      </el-descriptions>
+
+      <div style="margin-top: 20px">
+        <span class="font-small">支付信息</span>
+      </div>
+      <el-table
+        border
+        :data="payments"
+        size="small"
+        style="width: 100%;margin-top: 20px" >
+          <el-table-column label="支付单号" align="center" prop="payCode" width="120px" />
+          <el-table-column label="支付金额" align="center" prop="payMoney" />
+          <el-table-column label="类型" align="center" prop="payTypeCode" />
+          <el-table-column label="交易单号" align="center" prop="bankTransactionId" />
+          <el-table-column label="银行单号" align="center" prop="bankSerialNo" />
+          <el-table-column label="创建时间" align="center" prop="createTime" />
+          <el-table-column label="支付时间" align="center" prop="payTime" />
+      </el-table>
+
+
+      <div style="margin-top: 20px">
+        <span class="font-small">操作信息</span>
+      </div>
+      <el-table style="margin-top: 20px;width: 100%"
+                ref="orderHistoryTable"
+                :data="logs" border>
+        <el-table-column label="操作时间"  width="160" align="center">
+          <template slot-scope="scope">
+            {{scope.row.changeTime}}
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" align="center">
+          <template slot-scope="scope">
+            {{scope.row.changeMessage}}
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div style="margin-top: 20px">
+        <!-- <svg-icon icon-class="marker" style="color: #606266"></svg-icon> -->
+        <span class="font-small">分佣信息</span>
+      </div>
+      <el-table
+        border
+        :data="tuiMoneyLogs"
+        size="small"
+                style="width: 100%;margin-top: 20px" >
+          <el-table-column label="公司名称" align="center" prop="companyName" width="120px" />
+          <el-table-column label="金额" align="center" prop="money" />
+          <el-table-column label="余额" align="center" prop="balance" />
+          <el-table-column label="创建时间" align="center" prop="createTime" />
+          <el-table-column label="备注" align="center" prop="remark" />
+      </el-table>
+
+        <div style="margin-top: 20px">
+          <span class="font-small">审批信息</span>
+        </div>
+        <el-table style="margin-top: 20px;width: 100%"
+                  :data="auditLogs" border>
+          <el-table-column label="操作时间"  width="160" align="center">
+            <template slot-scope="scope">
+              {{scope.row.createTime}}
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center">
+            <template slot-scope="scope">
+              {{scope.row.content}}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+    </div>
+
+    <el-dialog :title="edit.title" :visible.sync="edit.open" width="600px" append-to-body>
+      <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
+        <el-form-item label="订单类型" prop="orderType"  >
+            <el-select style="width: 200px" v-model="editForm.orderType" placeholder="请选择订单类型" clearable size="small" >
+              <el-option
+                      v-for="item in orderTypeOptions"
+                      :key="item.dictValue"
+                      :label="item.dictLabel"
+                      :value="item.dictValue"
+                    />
+            </el-select>
+        </el-form-item>
+       <el-form-item label="状态" prop="status" >
+           <el-select style="width:220px" v-model="editForm.status" placeholder="请选择状态" clearable size="small">
+            <el-option key="0"  label="待支付" value="0" />
+            <el-option key="1"  label="待发货" value="1" />
+             <el-option key="2"  label="待收货" value="2" />
+             <el-option key="3"  label="交易成功" value="3" />
+             <el-option key="-1"  label="退款中" value="-1" />
+             <el-option key="-2"  label="已退款" value="-2" />
+             <el-option key="-3"  label="已取消" value="-3" />
+           </el-select>
+         </el-form-item>
+         <el-form-item label="档期归属" prop="scheduleId"  >
+            <el-select filterable style="width: 200px" v-model="editForm.scheduleId" placeholder="请选择档期" clearable size="small" >
+              <el-option
+                      v-for="item in scheduleOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+            </el-select>
+        </el-form-item>
+         <el-form-item label="详情地址" prop="userAddress"  >
+          <el-input v-model="editForm.userAddress" placeholder="请输入" />
+        </el-form-item>
+        <!-- <el-form-item label="erp单号" prop="extendOrderId"  >
+          <el-input v-model="editForm.extendOrderId" placeholder="请输入" />
+        </el-form-item> -->
+        <el-form-item label="备注" prop="mark"  >
+          <el-input v-model="editForm.mark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditForm">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="editDy.title" :visible.sync="editDy.open" width="600px" append-to-body>
+      <el-form ref="editDyForm" :model="editDyForm" :rules="editDyRules" label-width="120px">
+      <div  v-hasPermi="['store:storeOrder:updateErpOrder']"  style="margin-bottom: 20px;" >
+        <el-button size="mini" @click="updateErpOrder" >同步物流单号信息</el-button>
+      </div>
+        <el-form-item label="物流公司" prop="deliverySn" >
+           <el-select style="width:220px" v-model="editDyForm.deliverySn" placeholder="请选择" clearable size="small">
+            <el-option key="SF"  label="顺丰" value="SF" />
+            <el-option key="EMS"  label="邮政" value="EMS" />
+             <el-option key="ZTO"  label="中通" value="ZTO" />
+             <el-option key="JD"  label="京东" value="JD" />
+             <el-option key="DBL"  label="德邦" value="DBL" />
+           </el-select>
+         </el-form-item>
+        <el-form-item label="物流单号" prop="deliveryId"  >
+          <el-input v-model="editDyForm.deliveryId" placeholder="请输入物流单号" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitEditDyForm">确 定</el-button>
+        <el-button @click="editDy.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
+      <div  v-hasPermi="['store:storeOrder:syncExpress']"  >
+        <el-button size="mini" @click="syncExpress()" >同步快递鸟物流状态</el-button>
+      </div>
+      <el-table style="margin-top: 20px;width: 100%"
+                ref="orderHistoryTable"
+                :data="traces" border>
+        <el-table-column label="操作时间"  width="160" align="center">
+          <template slot-scope="scope">
+            {{scope.row.AcceptTime}}
+          </template>
+        </el-table-column>
+         <el-table-column label="位置" align="center">
+          <template slot-scope="scope">
+            {{scope.row.Location}}
+          </template>
+        </el-table-column>
+        <el-table-column label="描述" align="center">
+          <template slot-scope="scope">
+            {{scope.row.AcceptStation}}
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+
+    <el-dialog :title="erpDialog.title" :visible.sync="erpDialog.open" width="600px" append-to-body>
+      <div v-if="order!=null&&order.extendOrderId!=null&&order.status==1"  v-hasPermi="['store:storeOrder:updateExpress']"  >
+        <el-button size="mini" @click="updateExpress()" >同步物流发货</el-button>
+      </div>
+      <div class="table-layout"  v-if="erpOrder!=null">
+        <el-row>
+          <el-col :span="6" class="table-cell-title">订单编号</el-col>
+          <el-col :span="6" class="table-cell-title">是否代收</el-col>
+          <el-col :span="6" class="table-cell-title">快递编号</el-col>
+          <el-col :span="6" class="table-cell-title">快递名称</el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.code}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.cod?'是':'否'}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.express_code}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.express_name}}
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell-title">收货人</el-col>
+          <el-col :span="6" class="table-cell-title">电话</el-col>
+          <el-col :span="6" class="table-cell-title">地址</el-col>
+          <el-col :span="6" class="table-cell-title">运单号</el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_name}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_mobile}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.receiver_address}}
+          </el-col>
+          <el-col :span="6" class="table-cell">
+            {{erpOrder.deliverys!=null&&erpOrder.deliverys.length>0?erpOrder.deliverys[0].mail_no:''}}
+          </el-col>
+
+        </el-row>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {auditPayRemain,addTuiMoney,syncExpress,updateExpress,getEroOrder,refundOrderMoney, editTuiMoney,getExpress,finishOrder,listStoreOrder, getStoreOrder, delStoreOrder, addStoreOrder, updateStoreOrder, exportStoreOrder,updateDeliveryId, createErpOrder,updateErp,getStoreOrderAddress,getStoreOrderPhone} from "@/api/hisStore/storeOrder";
+import { getTcmScheduleList } from "@/api/company/schedule";
+export default {
+  name: "order",
+  data() {
+    return {
+      dialogVisibleImage: false,
+      createTypeOptions:[],
+      deliveryStatusOptions:[],
+      deliveryTypeOptions:[],
+      scheduleOptions:[],
+      schedules:[],
+      orderId:null,
+      erpDialog:{
+        title:"ERP订单信息",
+        open:false,
+      },
+      expressDialog:{
+        title:"物流信息",
+        open:false,
+      },
+      edit:{
+        title:"",
+        open:false,
+      },
+      editDy:{
+        title:"修改物流单号",
+        open:false,
+      },
+      editDyForm:{
+        deliverySn:null,
+        deliveryId:null,
+      },
+      editForm:{
+        orderType:null,
+        status:null,
+        userAddress:null,
+        // extendOrderId:null,
+        scheduleId:null,
+        mark:"",
+      },
+
+      editDyRules:{
+        deliverySn: [
+          { required: true, message: "物流公司不能为空", trigger: "blur" }
+        ],
+        deliveryId: [
+          { required: true, message: "物流单号不能为空", trigger: "blur" }
+        ],
+      },
+      editRules:{
+        userAddress: [
+          { required: true, message: "收货地址不能为空", trigger: "blur" }
+        ],
+
+      },
+      orderTypeOptions:[],
+      payTypeOptions:[],
+      statusOptions:[],
+      certificates:null,
+      orderStatus:null,
+      order:null,
+      user:{},
+      logs:[],
+      items:[],
+      express:null,
+      traces:[],
+      payments:[],
+      tuiMoneyLogs:[],
+      erpOrder:null,
+      auditLogs: [],
+    };
+  },
+  created() {
+    this.getDicts("store_order_delivery_status").then((response) => {
+      this.deliveryStatusOptions = response.data;
+    });
+    this.getDicts("store_order_delivery_type").then((response) => {
+      this.deliveryTypeOptions = response.data;
+    });
+
+    this.getDicts("store_order_type").then((response) => {
+      this.orderTypeOptions = response.data;
+    });
+    this.getDicts("store_order_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("store_pay_type").then((response) => {
+      this.payTypeOptions = response.data;
+    });
+    this.getDicts("store_order_create_type").then((response) => {
+      this.createTypeOptions = response.data;
+    });
+    getTcmScheduleList().then(response => {
+      this.scheduleOptions = response.data;
+    });
+  },
+  methods: {
+    handleAddress(){
+        const id = this.order.id;
+        getStoreOrderAddress(id).then(response =>{
+            this.order.userAddress = response.address;
+        })
+      },
+      handlePhone(){
+        const id = this.order.id;
+        getStoreOrderPhone(id).then(response =>{
+            this.order.userPhone = response.userPhone;
+        })
+      },
+    showImageDialog() {
+      this.dialogVisible = true;
+    },
+    syncExpress(){
+      var that=this;
+        this.$confirm('确定同步物流状态吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return syncExpress(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    updateErpOrder(){
+      var that=this;
+        this.$confirm('确定同步物流单号信息吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return updateErp(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+          this.editDy.open = false
+        }).catch(function() {});
+    },
+    updateExpress(){
+      var that=this;
+        this.$confirm('确定同步物流信息吗,同步后将自动发货', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return updateExpress(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    showErpOrder(){
+      this.erpDialog.open=true;
+      var data={extendOrderId:this.order.extendOrderId};
+      getEroOrder(data).then(response => {
+          this.erp = response.data;
+          if(response.data.orders!=null&&response.data.orders.length==1){
+            this.erpOrder=response.data.orders[0]
+          }
+          console.log(this.erpOrder)
+
+      });
+    },
+    showExpress(){
+      this.expressDialog.open=true;
+      getExpress(this.orderId).then(response => {
+          this.express = response.data;
+          if(this.express!=null&&this.express.Traces!=null){
+              this.traces=this.express.Traces
+          }
+
+      });
+
+    },
+    submitEditForm(){
+        this.$refs["editForm"].validate(valid => {
+        if (valid) {
+          updateStoreOrder(this.editForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.edit.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+
+        }
+      });
+    },
+    submitEditDyForm(){
+        this.$refs["editDyForm"].validate(valid => {
+        if (valid) {
+          updateDeliveryId(this.editDyForm).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("操作成功");
+              this.editDy.open = false;
+              this.getOrder(this.order.id);
+            }
+          });
+
+        }
+      });
+    },
+    editTuiMoney1(){
+      var that=this;
+        this.$confirm('是否冻结此订单推广佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return editTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editTuiMoney2(){
+      var that=this;
+        this.$confirm('是否解冻此订单推广佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return editTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    addTuiMoney(){
+      var that=this;
+        this.$confirm('确定手动分佣金吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return addTuiMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    refundOrderMoney(){
+        var that=this;
+        this.$confirm('确认退款吗', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return refundOrderMoney(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    finishOrder(){
+        var that=this;
+        this.$confirm('是否确认客户已收货?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return finishOrder(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    auditPayRemain(){
+        var that=this;
+        this.$confirm('是否确认已收尾款?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderId:that.order.id}
+          return auditPayRemain(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editOrder(){
+        this.edit.open=true;
+        this.editForm.id=this.order.id;
+        this.editForm.mark=this.order.mark
+        this.editForm.orderType=this.order.orderType.toString();
+        this.editForm.status = this.order.status.toString();
+        this.editForm.userAddress = this.order.userAddress.toString();
+        this.editForm.scheduleId = this.order.scheduleId;
+        // this.editForm.extendOrderId = this.order.extendOrderId.toString();
+
+    },
+    //推送管易按钮
+    addErpOrder(){
+        var that=this;
+        this.$confirm('是否确认推送erp?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          var data={orderCode:that.order.orderCode}
+          return createErpOrder(data);
+        }).then(() => {
+          this.msgSuccess("操作成功");
+          this.getOrder(this.order.id);
+        }).catch(function() {});
+    },
+    editDelivery(){
+      this.editDy.open = true;
+      this.editDyForm.id = this.order.id;
+      this.editDyForm.deliveryId = this.order.deliveryId;
+      this.editDyForm.deliverySn = this.order.deliverySn;
+    },
+    getOrder(orderId){
+        this.orderId=orderId;
+        this.certificates = null;
+        getStoreOrder(orderId).then(response => {
+            this.order = response.order;
+            if(response.order.certificates != null){
+              this.certificates = response.order.certificates;
+            }
+            if(response.order.status != null){
+              this.orderStatus = response.order.status;
+            }
+            this.user = response.user;
+            this.logs = response.logs;
+            this.items = response.items;
+            this.payments=response.payments;
+            this.tuiMoneyLogs=response.tuiMoneyLogs;
+            this.auditLogs = response.auditLogs;
+        });
+     }
+  }
+};
+</script>
+<style scoped>
+.order-content{
+  margin: 10px;
+
+}
+
+.operate-container {
+  background: #F2F6FC;
+  height: 60px;
+  margin: -20px -20px 0;
+  line-height: 60px;
+}
+
+.operate-button-container {
+  float: right;
+  margin-right: 20px
+}
+</style>

+ 102 - 0
src/views/hisStore/components/productSelect.vue

@@ -0,0 +1,102 @@
+<template>
+  <div class="product-select" >
+    <el-form   :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="商品名称" prop="productName">
+        <el-input
+          style="width:200px"
+          v-model="queryParams.productName"
+          placeholder="请输入商品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table border v-loading="loading" :data="list">
+      <el-table-column label="商品ID" align="center" prop="productId" />
+      <el-table-column label="商品图片" align="center" width="100">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.image" width="80">
+            <img :src="scope.row.image" style="max-width: 80px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+      <el-table-column label="单价" align="center" prop="price" />
+      <el-table-column label="操作" align="center" width="100px" >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleSelect(scope.row)"
+          >选择</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      style="padding-bottom:10px;"
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { listStoreProduct } from "@/api/hisStore/storeProduct";
+export default {
+  name: "selectProduct",
+  data() {
+    return {
+      loading: true,
+      list:[],
+      total: 0,
+      queryParams: {
+        productName:"",
+        pageNum: 1,
+        pageSize: 10,
+        isPackage:0,
+      }
+    };
+  },
+  created() {
+     this.getList();
+  },
+  methods: {
+    getData(){
+      this.getList();
+    },
+    handleSelect(row){
+      this.$emit('selectProduct',row);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    getList(){
+      this.loading = true;
+      listStoreProduct(this.queryParams).then(response => {
+        this.list = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    }
+  }
+};
+</script>
+<style scoped>
+.product-select{
+  padding-bottom: 15px;
+}
+</style>

+ 111 - 0
src/views/hisStore/components/testReportDetails.vue

@@ -0,0 +1,111 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         测试报告详情
+      </div>
+  <div class="contentx" v-if="item!=null">
+        <div class="desct"> 测试报告信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="报告编号"><span v-if="item!=null">{{item.reportSn}}</span></el-descriptions-item>
+          <el-descriptions-item label="用户昵称"><span v-if="item!=null">{{item.nickName}}</span></el-descriptions-item>
+          <el-descriptions-item label="用户电话"><span v-if="item!=null">{{item.phone}}</span></el-descriptions-item>
+          <el-descriptions-item label="诊断结果"><span v-if="item!=null">{{item.testResult}}</span></el-descriptions-item>
+          <el-descriptions-item label="分数"><span v-if="item!=null">{{item.score}}</span></el-descriptions-item>
+          <el-descriptions-item label="模板"><span v-if="item!=null">{{item.name}}</span></el-descriptions-item>
+          <el-descriptions-item label="备注"><span v-if="item!=null">{{item.remark}}</span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="patientJson!=null">
+        <div class="desct" > 患者信息</div>
+        <el-descriptions title="" :column="3" border >
+            <el-descriptions-item label="患者名称"><span >{{patientJson.name}}</span></el-descriptions-item>
+            <el-descriptions-item label="患者性别">
+              <dict-tag :options="sexOptions" :value="patientJson.sex"/>
+        </el-descriptions-item>
+            <el-descriptions-item label="患者年龄"><span >{{patientJson.age}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="conditioningPlanJson!=null">
+        <div class="desct"> 调理方案</div>
+        <el-descriptions title="" :column="1" border >
+            <el-descriptions-item :label="form.name" v-for=" form in conditioningPlanJson" ><span >{{form.value}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+  <div class="contentx" v-if="formJson!=null">
+        <div class="desct"> 表单信息</div>
+        <el-descriptions title="" :column="3" border >
+            <el-descriptions-item :label="form.title" v-for=" form in formJson" ><span >{{form.option}}</span></el-descriptions-item>
+        </el-descriptions>
+  </div>
+</div>
+</template>
+
+<script>
+import { listTestReport, getTestReport, delTestReport, addTestReport, updateTestReport, exportTestReport } from "@/api/hisStore/testReport";
+  export default {
+    name: "testReport",
+    props:["data"],
+    data() {
+      return {
+        item:null,
+        formJson:null,
+        conditioningPlanJson:null,
+        patientJson:null,
+        sexOptions:[],
+      }
+    },
+    created() {
+      this.getDicts("sys_patient_sex").then(response => {
+         this.sexOptions = response.data;
+       });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        this.conditioningPlanJson=null;
+        this.formJson=null;
+        this.patientJson=null;
+        getTestReport(orderId).then(response => {
+            this.item = response.data;
+            if(response.data){
+              if(response.data.formJson!=null){
+                this.formJson=JSON.parse(response.data.formJson);
+                console.log(this.formJson)
+              }
+              if(response.data.conditioningPlanJson!=null){
+                this.conditioningPlanJson=JSON.parse(response.data.conditioningPlanJson)
+              }
+              if(response.data.patientJson!=null){
+                this.patientJson=JSON.parse(response.data.patientJson)
+              }
+            }
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 500px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 108 - 0
src/views/hisStore/components/testTempDetails.vue

@@ -0,0 +1,108 @@
+<template>
+
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      测一测模板详情
+    </div>
+
+<div class="content" v-if="item!=null">
+    <div class="desct">
+      测一测模板信息
+    </div>
+    <el-descriptions title="" :column="3" border>
+    <el-descriptions-item label="名称" >
+        <span v-if="item!=null">{{item.name}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="模板编号" >
+        <span v-if="item!=null">{{item.tempCode}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="状态" >
+         <dict-tag :options="statusOptions" :value="item.status"/>
+    </el-descriptions-item>
+
+    <el-descriptions-item label="创建时间" >
+        <span v-if="item!=null">{{item.createTime}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="修改时间" >
+        <span v-if="item!=null">{{item.updateTime}}</span>
+    </el-descriptions-item>
+    </el-descriptions>
+  </div>
+<div class="content" v-for="mb in itemTypeJson">
+    <div class="desct">
+      {{mb.itemType}}
+    </div>
+    <el-table :data="mb.item" :cell-style="{ textAlign: 'center' }" :header-cell-style="{textAlign: 'center'}" border>
+      <el-table-column label="名称" prop="name" width="200px">
+        <template slot-scope="scope">
+          {{ scope.row.name }}
+        </template>
+      </el-table-column>
+      <el-table-column label="内容" prop="value" >
+        <template slot-scope="scope">
+          <div style="white-space: pre-wrap;">
+            {{ scope.row.value }}
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+      </div>
+</template>
+
+<script>
+import { listTestTemp, getTestTemp, delTestTemp, addTestTemp, updateTestTemp, exportTestTemp } from "@/api/hisStore/testTemp";
+  export default {
+    name: "testTempDetails",
+    props:["data"],
+    data() {
+      return {
+       // 状态字典
+       statusOptions: [],
+       itemTypeJson:[],
+        item:null,
+      }
+    },
+    created() {
+    this.getDicts("sys_company_status").then(response => {
+      this.statusOptions = response.data;
+    });
+
+    },
+    methods: {
+      getDetails(orderId) {
+          this.item=null;
+          getTestTemp(orderId).then(response => {
+              this.item = response.data;
+              this.itemTypeJson=  JSON.parse(this.item.itemTypeJson)
+          });
+      },
+
+    }
+  }
+</script>
+<style>
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+     padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>
+
+

+ 116 - 0
src/views/hisStore/components/testTempItemDetails.vue

@@ -0,0 +1,116 @@
+<template>
+
+  <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+    <div style="padding: 20px; background-color: #fff;">
+      测一测模板项目详情
+    </div>
+
+<div class="content" v-if="item!=null">
+    <div class="desct">
+      测一测模板项目信息
+    </div>
+    <el-descriptions title="" :column="3" border>
+    <el-descriptions-item label="标题" >
+        <span v-if="item!=null">{{item.title}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="模板名称" >
+        <span v-if="item!=null">{{name}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="项目类型" >
+         <dict-tag :options="itemTypeOptions" :value="item.tempId"/>
+    </el-descriptions-item>
+    <el-descriptions-item label="排序" >
+        <span v-if="item!=null">{{item.sort}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="创建时间" >
+        <span v-if="item!=null">{{item.createTime}}</span>
+    </el-descriptions-item>
+    <el-descriptions-item label="修改时间" >
+        <span v-if="item!=null">{{item.updateTime}}</span>
+    </el-descriptions-item>
+        </el-descriptions>
+            </div>
+            <div class="content" v-if="item!=null">
+<div class="desct">
+  详情
+</div>
+
+  <el-table :data="scoreJson" :cell-style="{ textAlign: 'center' }" :header-cell-style="{textAlign: 'center'}" border>
+    <el-table-column label="标题" prop="name" >
+      <template slot-scope="scope">
+        {{ scope.row.name }}
+      </template>
+    </el-table-column>
+    <el-table-column label="分值" prop="score" >
+      <template slot-scope="scope">
+        {{ scope.row.score }}
+      </template>
+    </el-table-column>
+  </el-table>
+
+
+      </div>
+
+      </div>
+</template>
+
+<script>
+import { listTestTempItem, getTestTempItem, delTestTempItem, addTestTempItem, updateTestTempItem, exportTestTempItem } from "@/api/hisStore/testTempItem";
+import { getAllTestTemp } from "@/api/hisStore/testTemp";
+  export default {
+    name: "patientdetails",
+    props:["data"],
+    data() {
+      return {
+       // 状态字典
+       itemTypeOptions: [],
+        item:null,
+        scoreJson:[],
+        TempList:[],
+        name:null,
+      }
+    },
+    created() {
+     this.getDicts("test_temp_item_type").then(response => {
+       this.itemTypeOptions = response.data;
+     });
+
+    },
+    methods: {
+
+      getDetails(orderId,name) {
+          this.name=name;
+          this.item=null;
+          getTestTempItem(orderId).then(response => {
+              this.item = response.data;
+              this.scoreJson=JSON.parse(response.data.scoreJson);
+          });
+      },
+
+    }
+  }
+</script>
+<style>
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .content{
+      height: 100%;
+      background-color: #fff;
+     padding: 0px 20px 20px;
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+</style>
+
+

+ 80 - 0
src/views/hisStore/components/vesselDetails.vue

@@ -0,0 +1,80 @@
+<template>
+    <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
+      <div style="padding: 20px; background-color: #fff;">
+         筋络详情
+      </div>
+<div class="contentx" v-if="item!=null">
+        <div class="desct"> 筋络信息</div>
+        <el-descriptions title="" :column="3" border>
+          <el-descriptions-item label="图片" >
+            <el-image
+                    style="width: 100px"
+                    :src="item.imgUrl"
+                    :preview-src-list="[item.imgUrl]">
+            </el-image>
+          </el-descriptions-item>
+          <el-descriptions-item label="请输入筋络穴位名称"><span v-if="item!=null">{{item.vesselName}}</span></el-descriptions-item>
+          <el-descriptions-item label="排序"><span v-if="item!=null">{{item.sort}}</span></el-descriptions-item>
+           <el-descriptions-item label="经络"><span v-if="item!=null">{{item.vessel}}</span></el-descriptions-item>
+          <el-descriptions-item label="部位"><span v-if="item!=null">{{item.region}}</span></el-descriptions-item>
+
+          <el-descriptions-item label="状态"><span v-if="item!=null"> <dict-tag :options="statusOptions" :value="item.status"/></span></el-descriptions-item>
+          <el-descriptions-item label="创建时间"><span v-if="item!=null">{{item.createTime}}</span></el-descriptions-item>
+          <el-descriptions-item label="描述"><span  v-if="item!=null" v-html="item.descs" ></span></el-descriptions-item>
+        </el-descriptions>
+    </div>
+
+
+    </div>
+</template>
+
+<script>
+import { listVessel, getVessel, delVessel, addVessel, updateVessel, exportVessel } from "@/api/hisStore/vessel";
+  export default {
+    name: "getVessel",
+    data() {
+      return {
+        item:null,
+        // 状态字典
+        statusOptions: [],
+      }
+    },
+    created() {
+      this.getDicts("sys_company_status").then(response => {
+        this.statusOptions = response.data;
+      });
+    },
+    methods: {
+      getDetails(orderId) {
+        this.item=null;
+        getVessel(orderId).then(response => {
+            this.item = response.data;
+        });
+      },
+    }
+  }
+</script>
+<style>
+  .contentx{
+      height: 100%;
+      background-color: #fff;
+      padding: 0px 20px 20px;
+
+
+      margin: 20px;
+  }
+  .el-descriptions-item__label.is-bordered-label{
+    font-weight: normal;
+  }
+  .el-descriptions-item__content {
+    max-width: 150px;
+    min-width: 100px;
+  }
+  .desct{
+      padding-top: 20px;
+      padding-bottom: 20px;
+      color: #524b4a;
+      font-weight: bold;
+    }
+
+</style>

+ 525 - 0
src/views/hisStore/integralGoods/index.vue

@@ -0,0 +1,525 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="商品名称" prop="goodsName">
+        <el-input
+          v-model="queryParams.goodsName"
+          placeholder="请输入商品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商品分类" prop="goodsType">
+        <el-select v-model="queryParams.goodsType" placeholder="请选择商品分类" clearable size="small">
+          <el-option
+            v-for="dict in goodsTypeOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['his:integralGoods:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['his:integralGoods:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['his:integralGoods:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:integralGoods:export']"
+        >导出</el-button>
+      </el-col>
+
+      <el-col :span="1.5">
+              <el-button
+                type="info"
+                plain
+                icon="el-icon-upload2"
+                size="mini"
+                @click="handleImport"
+          v-hasPermi="['his:integralGoods:handleImport']"
+              >导入</el-button>
+      </el-col>
+
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" border :data="integralGoodsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="封面图" align="center" prop="imgUrl" >
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.imgUrl" width="100">
+            <img :src="scope.row.imgUrl" style="max-width: 150px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品名称" align="center" prop="goodsName" />
+      <el-table-column label="原价" align="center" prop="otPrice" />
+      <el-table-column label="商品分类" align="center" prop="goodsType">
+        <template slot-scope="scope">
+          <dict-tag :options="goodsTypeOptions" :value="scope.row.goodsType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="所需积分" align="center" prop="integral" />
+      <el-table-column label="排序" align="center" prop="sort" />
+      <el-table-column label="库存" align="center" prop="stock" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['his:integralGoods:edit']"
+          >修改</el-button>
+          <el-button
+             size="mini"
+             type="text"
+             @click="handledetails(scope.row)"
+             >详情
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['his:integralGoods:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改积分商品对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="商品名称" prop="goodsName">
+          <el-input v-model="form.goodsName" placeholder="请输入商品名称" />
+        </el-form-item>
+        <el-form-item label="商品分类" prop="goodsType">
+          <el-select v-model="form.goodsType" placeholder="请选择商品分类">
+            <el-option
+              v-for="dict in goodsTypeOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="parseInt(dict.dictValue)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      <el-form-item label="商品图片" prop="imgUrl">
+       <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150" />
+      </el-form-item>
+      <el-form-item label="轮播图" prop="images">
+        <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
+      </el-form-item>
+
+        <el-form-item label="原价" prop="otPrice">
+           <el-input-number v-model="form.otPrice" :precision="2" :step="0.1" ></el-input-number>
+        </el-form-item>
+        <el-form-item label="所需积分" prop="integral">
+          <el-input-number v-model="form.integral"  :min="0"  label="所需积分"></el-input-number>
+        </el-form-item>
+        <el-form-item label="商品编号" prop="barCode">
+          <el-input v-model="form.barCode" placeholder="请输入商品编号"  style="width: 200px;"/>
+        </el-form-item>
+
+        <el-form-item label="排序" prop="sort">
+          <el-input-number v-model="form.sort"  :min="0"  label="排序"></el-input-number>
+        </el-form-item>
+
+        <el-form-item label="详情">
+          <Editor ref="myeditor"   @on-text-change="updateText"/>
+        </el-form-item>
+        <el-form-item label="库存" prop="stock">
+          <el-input-number v-model="form.stock"  :min="0"  label="库存"></el-input-number>
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio
+              v-for="dict in statusOptions"
+              :key="dict.dictValue"
+              :label="parseInt(dict.dictValue)"
+            >{{dict.dictLabel}}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+    	:with-header="false"
+            size="75%"
+             :title="show.title" :visible.sync="show.open">
+         <integralGoodsDetails  ref="Details" />
+       </el-drawer>
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+            ref="upload"
+            :limit="1"
+            accept=".xlsx, .xls"
+            :headers="upload.headers"
+            :action="upload.url + '?updateSupport=' + upload.updateSupport"
+            :disabled="upload.isUploading"
+            :on-progress="handleFileUploadProgress"
+            :on-success="handleFileSuccess"
+            :auto-upload="false"
+            drag
+          >
+            <i class="el-icon-upload"></i>
+            <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+            <div class="el-upload__tip text-center" slot="tip">
+              <div class="el-upload__tip" slot="tip">
+           <!--     <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 -->
+              </div>
+              <span>仅允许导入xls、xlsx格式文件。</span>
+              <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
+            </div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="submitFileForm">确 定</el-button>
+            <el-button @click="upload.open = false">取 消</el-button>
+          </div>
+        </el-dialog>
+
+
+  </div>
+</template>
+
+<script>
+import { importTemplate,listIntegralGoods, getIntegralGoods, delIntegralGoods, addIntegralGoods, updateIntegralGoods, exportIntegralGoods } from "@/api/hisStore/integralGoods";
+import Material from '@/components/Material';
+import Editor from '@/components/Editor/wang';
+import { getToken } from "@/utils/auth";
+import integralGoodsDetails from '../components/integralGoodsDetails';
+export default {
+  name: "HisIntegralGoods",
+  components: {Material,Editor,integralGoodsDetails},
+  watch: {
+    imageArr: function(val) {
+      this.form.imgUrl = val.join(',')
+    },
+    photoArr: function(val) {
+      this.form.images = val.join(',')
+    }
+  },
+  data() {
+    return {
+      show:{
+              open:false,
+            },
+      upload: {
+              // 是否显示弹出层
+              open: false,
+              // 弹出层标题
+              title: "",
+              // 是否禁用上传
+              isUploading: false,
+              // 是否更新已经存在的用户数据
+              updateSupport: 0,
+              // 设置上传的请求头部
+              headers: { Authorization: "Bearer " + getToken() },
+              // 上传的地址
+              url: process.env.VUE_APP_BASE_API + "/his/integralGoods/importData"
+            },
+      photoArr:[],
+      imageArr:[],
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 积分商品表格数据
+      integralGoodsList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 商品分类字典
+      goodsTypeOptions: [],
+      // 状态字典
+      statusOptions: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        goodsName: null,
+        goodsType: null,
+        status: null,
+        integral: null,
+        createTime: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        imgUrl: [
+          { required: true, message: "封面图不能为空", trigger: "blur" }
+        ],
+        goodsName: [
+          { required: true, message: "商品名称不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getDicts("sys_integral_goods_type").then(response => {
+      this.goodsTypeOptions = response.data;
+    });
+    this.getDicts("sys_company_status").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+        handledetails(row){
+            this.show.open=true;
+            setTimeout(() => {
+                 this.$refs.Details.getDetails(row.goodsId);
+            }, 1);
+        },
+  /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    /** 查询积分商品列表 */
+    getList() {
+      this.loading = true;
+      listIntegralGoods(this.queryParams).then(response => {
+        this.integralGoodsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     updateText(text){
+          this.form.descs=text
+        },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        goodsId: null,
+        imgUrl: null,
+        images: null,
+        goodsName: null,
+        otPrice: null,
+        goodsType: null,
+        status: 0,
+        integral: null,
+        sort: null,
+        stock: null,
+        descs: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.goodsId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加积分商品";
+      //新增
+      setTimeout(() => {
+                this.$refs.myeditor.setText("");
+              }, 500);
+
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const goodsId = row.goodsId || this.ids
+      getIntegralGoods(goodsId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改积分商品";
+         if(this.form.imgUrl!=null){
+             this.imageArr=this.form.imgUrl.split(",");
+           }
+         if(this.form.images!=null){
+             this.photoArr=this.form.images.split(",");
+           }
+        //修改按钮
+        setTimeout(() => {
+                  if(this.form.descs==null){
+                    this.$refs.myeditor.setText("");
+                  }
+                  else{
+                    this.$refs.myeditor.setText(this.form.descs);
+                  }
+                }, 1);
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.goodsId != null) {
+            updateIntegralGoods(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIntegralGoods(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const goodsIds = row.goodsId || this.ids;
+      this.$confirm('是否确认删除积分商品编号为"' + goodsIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delIntegralGoods(goodsIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有积分商品数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportIntegralGoods(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 483 - 0
src/views/hisStore/integralOrder/index.vue

@@ -0,0 +1,483 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="订单编号" prop="orderCode">
+        <el-input
+          v-model="queryParams.orderCode"
+          placeholder="请输入订单编号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户名称" prop="userName">
+        <el-input
+          v-model="queryParams.userName"
+          placeholder="请输入用户名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户电话" prop="userPhone">
+        <el-input
+          v-model="queryParams.userPhone"
+          placeholder="请输入用户电话"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="快递单号" prop="deliverySn">
+        <el-input
+          v-model="queryParams.deliverySn"
+          placeholder="请输入快递单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+       <el-form-item label="提交时间" prop="createTime">
+                 <el-date-picker v-model="createTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
+              </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:integralOrder:export']"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          plain
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['his:integralOrder:exportDeliver']"
+        >导入发货</el-button>
+      </el-col>
+
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+    <el-tabs type="card" v-model="actName" @tab-click="handleClickX">
+      <el-tab-pane label="全部订单" name="10"></el-tab-pane>
+      <el-tab-pane v-for="(item,index) in statusOptions" :label="item.dictLabel" :name="item.dictValue"></el-tab-pane>
+    </el-tabs>
+    <el-table v-loading="loading" border :data="integralOrderList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="订单编号" align="center" prop="orderCode" />
+      <el-table-column label="用户名称" align="center" prop="userName" />
+      <el-table-column label="用户电话" align="center" prop="userPhone" />
+      <el-table-column label="用户地址" align="center" prop="userAddress" show-overflow-tooltip />
+      <el-table-column label="支付积分" align="center" prop="integral" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="快递公司编号" align="center" prop="deliveryCode" />
+      <el-table-column label="快递名称" align="center" prop="deliveryName" />
+      <el-table-column label="快递单号" align="center" prop="deliverySn" />
+      <el-table-column label="发货时间" align="center" prop="deliveryTime" width="180"/>
+      <el-table-column label="提交时间" align="center" prop="createTime" width="180"/>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
+        <template slot-scope="scope">
+          <el-button
+             size="mini"
+             type="text"
+             @click="handledetails(scope.row)"
+             >详情
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改积分商品订单对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="订单编号" prop="orderCode">
+          <el-input v-model="form.orderCode" placeholder="请输入订单编号" />
+        </el-form-item>
+        <el-form-item label="用户id" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户id" />
+        </el-form-item>
+        <el-form-item label="用户名称" prop="userName">
+          <el-input v-model="form.userName" placeholder="请输入用户名称" />
+        </el-form-item>
+        <el-form-item label="用户电话" prop="userPhone">
+          <el-input v-model="form.userPhone" placeholder="请输入用户电话" />
+        </el-form-item>
+        <el-form-item label="用户地址" prop="userAddress">
+          <el-input v-model="form.userAddress" placeholder="请输入用户地址" />
+        </el-form-item>
+        <el-form-item label="商品信息" prop="itemJson">
+          <el-input v-model="form.itemJson" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="支付积分" prop="integral">
+          <el-input v-model="form.integral" placeholder="请输入支付积分" />
+        </el-form-item>
+        <el-form-item label="1:待发货;2:待收货;3:已完成" prop="status">
+          <el-select v-model="form.status" placeholder="请选择1:待发货;2:待收货;3:已完成">
+            <el-option
+              v-for="dict in statusOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="快递公司编号" prop="deliveryCode">
+          <el-input v-model="form.deliveryCode" placeholder="请输入快递公司编号" />
+        </el-form-item>
+        <el-form-item label="快递名称" prop="deliveryName">
+          <el-input v-model="form.deliveryName" placeholder="请输入快递名称" />
+        </el-form-item>
+        <el-form-item label="快递单号" prop="deliverySn">
+          <el-input v-model="form.deliverySn" placeholder="请输入快递单号" />
+        </el-form-item>
+        <el-form-item label="发货时间" prop="deliveryTime">
+          <el-date-picker clearable size="small"
+            v-model="form.deliveryTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择发货时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-drawer
+    	:with-header="false"
+            size="75%"
+             :title="show.title" :visible.sync="show.open">
+         <integralOrderDetails  ref="Details" />
+       </el-drawer>
+   <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+         <el-upload
+           ref="upload"
+           :limit="1"
+           accept=".xlsx, .xls"
+           :headers="upload.headers"
+           :action="upload.url + '?updateSupport=' + upload.updateSupport"
+           :disabled="upload.isUploading"
+           :on-progress="handleFileUploadProgress"
+           :on-success="handleFileSuccess"
+           :auto-upload="false"
+           drag
+         >
+           <i class="el-icon-upload"></i>
+           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+           <div class="el-upload__tip text-center" slot="tip">
+             <div class="el-upload__tip" slot="tip">
+             </div>
+             <span>仅允许导入xls、xlsx格式文件。</span>
+             <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
+           </div>
+         </el-upload>
+       <div slot="footer" class="dialog-footer">
+         <el-button type="primary" @click="submitFileForm">确 定</el-button>
+         <el-button @click="upload.open = false">取 消</el-button>
+       </div>
+     </el-dialog>
+  </div>
+</template>
+
+<script>
+import {importTemplate, listIntegralOrder,importExpressTemplate, getIntegralOrder, delIntegralOrder, addIntegralOrder, updateIntegralOrder, exportIntegralOrder } from "@/api/hisStore/integralOrder";
+import integralOrderDetails from '../components/integralOrderDetails.vue';
+import { getToken } from "@/utils/auth";
+export default {
+  name: "HisIntegralOrder",
+  components: { integralOrderDetails },
+  data() {
+    return {
+      show:{
+              open:false,
+            },
+      upload: {
+        // 是否显示弹出层
+        open: false,
+        // 弹出层标题
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/his/integralOrder/importData"
+      },
+      // 遮罩层
+      loading: true,
+      actName:"10",
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 积分商品订单表格数据
+      integralOrderList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 1:待发货;2:待收货;3:已完成字典
+      statusOptions: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderCode: null,
+        userName: null,
+        userPhone: null,
+        integral: null,
+        status: null,
+        deliverySn: null,
+        createTime: null,
+        sTime:null,
+        eTime:null,
+      },
+       createTime:null,
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: "用户id不能为空", trigger: "blur" }
+        ],
+        status: [
+          { required: true, message: "1:待发货;2:待收货;3:已完成不能为空", trigger: "change" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getDicts("sys_integral_order_status").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    change(){
+          if(this.createTime!=null){
+            this.queryParams.sTime=this.createTime[0];
+            this.queryParams.eTime=this.createTime[1];
+          }else{
+            this.queryParams.sTime=null;
+            this.queryParams.eTime=null;
+          }
+
+        },
+    handleImport() {
+        this.upload.title = "导入";
+        this.upload.open = true;
+       },
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    handledetails(row){
+        this.show.open=true;
+        setTimeout(() => {
+             this.$refs.Details.getDetails(row.orderId);
+        }, 1);
+    },
+    /** 查询积分商品订单列表 */
+    getList() {
+      this.loading = true;
+      listIntegralOrder(this.queryParams).then(response => {
+        this.integralOrderList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        orderId: null,
+        orderCode: null,
+        userId: null,
+        userName: null,
+        userPhone: null,
+        userAddress: null,
+        itemJson: null,
+        integral: null,
+        status: null,
+        deliveryCode: null,
+        deliveryName: null,
+        deliverySn: null,
+        deliveryTime: null,
+        createTime: null,
+        remark: null,
+        sTime:null,
+        eTime:null,
+        createTime:null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.createTime=null;
+      this.queryParams.sTime=null;
+      this.queryParams.eTime=null;
+      this.handleQuery();
+
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.orderId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加积分商品订单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const orderId = row.orderId || this.ids
+      getIntegralOrder(orderId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改积分商品订单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.orderId != null) {
+            updateIntegralOrder(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIntegralOrder(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    handleClickX(tab, event) {
+     if(tab.name=="10"){
+       this.queryParams.status=null;
+     }else{
+       this.queryParams.status=tab.name;
+     }
+      this.handleQuery();
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const orderIds = row.orderId || this.ids;
+      this.$confirm('是否确认删除积分商品订单编号为"' + orderIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delIntegralOrder(orderIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有积分商品订单数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportIntegralOrder(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 341 - 0
src/views/hisStore/prescribe/index.vue

@@ -0,0 +1,341 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="处⽅ID" prop="rpId">
+        <el-input
+          v-model="queryParams.rpId"
+          placeholder="请输入处⽅单ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="订单号" prop="orderCode">
+        <el-input
+          v-model="queryParams.orderCode"
+          placeholder="请输入订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+         <el-select   v-model="queryParams.status" placeholder="请选择状态" clearable size="small" >
+         <el-option
+                v-for="item in prescribeStatusOptions"
+                :key="item.dictValue"
+                :label="item.dictLabel"
+                :value="item.dictValue"
+              />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-table  height="500" border v-loading="loading" :data="prescribeList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="ID" align="center" prop="prescribeId" />
+      <el-table-column label="订单号" align="center" prop="orderCode" />
+      <el-table-column label="会员昵称" align="center" prop="userNickname" />
+      <el-table-column label="会员手机号" align="center" prop="userPhone" />
+      <el-table-column label="患者姓名" align="center" prop="patientName" />
+      <el-table-column label="患者年龄" align="center" prop="patientAge" />
+      <!-- <el-table-column label="患者电话" align="center" prop="patientTel" /> -->
+      <el-table-column label="患者性别" align="center" prop="patientGender" />
+      <el-table-column label="处⽅单ID" align="center" prop="rpId" />
+      <el-table-column label="病情描述(主诉)" align="center" prop="chiefComplaint" />
+      <el-table-column label="现病史" align="center" prop="nowIllness" />
+      <el-table-column label="既往史" align="center" prop="historyIllness" />
+
+
+      <!-- <el-table-column label="体重" align="center" prop="weight" /> -->
+      <el-table-column label="是否有过敏史" align="center" prop="isHistoryAllergic" />
+      <!-- <el-table-column label="过敏史" align="center" prop="historyAllergic" /> -->
+      <el-table-column label="肝功能是否异常" align="center" prop="liverUnusual" />
+      <el-table-column label="肾功能是否异常" align="center" prop="renalUnusual" />
+      <el-table-column label="是否是备孕/怀孕/哺乳期" align="center" prop="lactationFlag" />
+      <el-table-column label="复诊凭证" align="center" prop="recordPic" width="120">
+        <template slot-scope="scope">
+          <el-image
+            v-if="scope.row.recordPic!=null"
+            style="width: 50px; height: 50px"
+            :src="parsePhoto(scope.row.recordPic)[0]"
+            :preview-src-list="parsePhoto(scope.row.recordPic)">
+          </el-image>
+        </template>
+      </el-table-column>
+      <el-table-column label="处方图片" align="center" width="120">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.rpUrl" width="100">
+            <img :src="scope.row.rpUrl" style="max-width: 500px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="处⽅开具时间" align="center" prop="rpCreateTime" width="180">
+      </el-table-column>
+      <el-table-column label="诊断" align="center" prop="diagnose" />
+      <el-table-column label="审核意见" align="center" prop="auditReason" />
+      <el-table-column label="医生名称" align="center" prop="doctorName" />
+      <el-table-column label="科室名称" align="center" prop="doctorId" />
+      <el-table-column label="提交时间" align="center" prop="createTime" width="180">
+      </el-table-column>
+      <el-table-column label="状态" align="center" prop="status" >
+          <template slot-scope="scope">
+              <el-tag prop="status" v-for="(item, index) in prescribeStatusOptions"    v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+          </template>
+      </el-table-column>
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleShowOrder(scope.row)"
+            v-hasPermi="['store:prescribe:showOrder']"
+          >查看订单</el-button>
+
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <el-dialog :title="show.title" v-if="show.open" :visible.sync="show.open" width="1000px" append-to-body>
+        <product-order  ref="order" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listPrescribe, getPrescribe, delPrescribe, addPrescribe, updatePrescribe, exportPrescribe } from "@/api/hisStore/prescribe";
+
+import productOrder from "../components/productOrder";
+export default {
+  components: { productOrder },
+  name: "HisPrescribe",
+  data() {
+    return {
+      show:{
+        open:false,
+        title:"订单详情"
+      },
+      prescribeStatusOptions:[],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 处方表格数据
+      prescribeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        prescribeType: null,
+        orderId: null,
+        userId: null,
+        patientId: null,
+        rpId: null,
+        pharmacyCode: null,
+        pharmacyName: null,
+        chiefComplaint: null,
+        nowIllness: null,
+        historyIllness: null,
+        patientAge: null,
+        patientName: null,
+        weight: null,
+        isHistoryAllergic: null,
+        historyAllergic: null,
+        liverUnusual: null,
+        renalUnusual: null,
+        lactationFlag: null,
+        patientTel: null,
+        patientGender: null,
+        recordPic: null,
+        rpUrl: null,
+        rpCreateTime: null,
+        diagnose: null,
+        drugs: null,
+        doctorName: null,
+        doctorId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getDicts("prescribe_status").then((response) => {
+      this.prescribeStatusOptions = response.data;
+    });
+    this.getList();
+  },
+  methods: {
+    handleShowOrder(row){
+      this.show.open=true;
+      const orderId = row.orderId ;
+      setTimeout(() => {
+        this.$refs.order.getOrder(orderId);
+      }, 500);
+    },
+    /** 查询处方列表 */
+    getList() {
+      this.loading = true;
+      listPrescribe(this.queryParams).then(response => {
+        this.prescribeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        prescribeId: null,
+        prescribeType: null,
+        orderId: null,
+        userId: null,
+        patientId: null,
+        rpId: null,
+        pharmacyCode: null,
+        pharmacyName: null,
+        chiefComplaint: null,
+        nowIllness: null,
+        historyIllness: null,
+        patientAge: null,
+        patientName: null,
+        weight: null,
+        isHistoryAllergic: null,
+        historyAllergic: null,
+        liverUnusual: null,
+        renalUnusual: null,
+        lactationFlag: null,
+        patientTel: null,
+        patientGender: null,
+        recordPic: null,
+        rpUrl: null,
+        rpCreateTime: null,
+        diagnose: null,
+        drugs: null,
+        doctorName: null,
+        doctorId: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.prescribeId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加处方";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const prescribeId = row.prescribeId || this.ids
+      getPrescribe(prescribeId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改处方";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.prescribeId != null) {
+            updatePrescribe(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          } else {
+            addPrescribe(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const prescribeIds = row.prescribeId || this.ids;
+      this.$confirm('是否确认删除处方编号为"' + prescribeIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delPrescribe(prescribeIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有处方数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportPrescribe(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    }
+  }
+};
+</script>
+

+ 428 - 0
src/views/hisStore/prescribeDrug/index.vue

@@ -0,0 +1,428 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="产品ID" prop="prescribeId">
+        <el-input
+          v-model="queryParams.prescribeId"
+          placeholder="请输入产品ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="药品名称" prop="drugCommonName">
+        <el-input
+          v-model="queryParams.drugCommonName"
+          placeholder="请输入药品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="规格" prop="drugSpecification">
+        <el-input
+          v-model="queryParams.drugSpecification"
+          placeholder="请输入规格"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="使⽤⽅法" prop="usageMethod">
+        <el-input
+          v-model="queryParams.usageMethod"
+          placeholder="请输入使⽤⽅法"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="药品频次" prop="usageFrequencyUnit">
+        <el-input
+          v-model="queryParams.usageFrequencyUnit"
+          placeholder="请输入药品频次"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="每次⽤药数量" prop="usagePerUseCount">
+        <el-input
+          v-model="queryParams.usagePerUseCount"
+          placeholder="请输入每次⽤药数量"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="每次⽤药单位" prop="usagePerUseUnit">
+        <el-input
+          v-model="queryParams.usagePerUseUnit"
+          placeholder="请输入每次⽤药单位"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="天数" prop="usageDays">
+        <el-input
+          v-model="queryParams.usageDays"
+          placeholder="请输入天数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="药品数量" prop="saleAmount">
+        <el-input
+          v-model="queryParams.saleAmount"
+          placeholder="请输入药品数量"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="药品数量单位" prop="saleUnit">
+        <el-input
+          v-model="queryParams.saleUnit"
+          placeholder="请输入药品数量单位"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="药品说明书" prop="approvalNumber">
+        <el-input
+          v-model="queryParams.approvalNumber"
+          placeholder="请输入药品说明书"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="产品ID" prop="productId">
+        <el-input
+          v-model="queryParams.productId"
+          placeholder="请输入产品ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['store:prescribeDrug:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['store:prescribeDrug:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['store:prescribeDrug:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['store:prescribeDrug:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="prescribeDrugList" @selection-change="handleSelectionChange" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="ID" align="center" prop="drugId" />
+      <el-table-column label="ID" align="center" prop="prescribeId" />
+      <el-table-column label="药品名称" align="center" prop="drugCommonName" />
+      <el-table-column label="规格" align="center" prop="drugSpecification" />
+      <el-table-column label="使⽤⽅法" align="center" prop="usageMethod" />
+      <el-table-column label="药品频次" align="center" prop="usageFrequencyUnit" />
+      <el-table-column label="每次⽤药数量" align="center" prop="usagePerUseCount" />
+      <el-table-column label="每次⽤药单位" align="center" prop="usagePerUseUnit" />
+      <el-table-column label="天数" align="center" prop="usageDays" />
+      <el-table-column label="药品数量" align="center" prop="saleAmount" />
+      <el-table-column label="药品数量单位" align="center" prop="saleUnit" />
+      <el-table-column label="药品说明书" align="center" prop="instructions" />
+      <el-table-column label="药品说明书" align="center" prop="approvalNumber" />
+      <el-table-column label="产品ID" align="center" prop="productId" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['store:prescribeDrug:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['store:prescribeDrug:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改处方药品对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="产品ID" prop="prescribeId">
+          <el-input v-model="form.prescribeId" placeholder="请输入产品ID" />
+        </el-form-item>
+        <el-form-item label="药品名称" prop="drugCommonName">
+          <el-input v-model="form.drugCommonName" placeholder="请输入药品名称" />
+        </el-form-item>
+        <el-form-item label="规格" prop="drugSpecification">
+          <el-input v-model="form.drugSpecification" placeholder="请输入规格" />
+        </el-form-item>
+        <el-form-item label="使⽤⽅法" prop="usageMethod">
+          <el-input v-model="form.usageMethod" placeholder="请输入使⽤⽅法" />
+        </el-form-item>
+        <el-form-item label="药品频次" prop="usageFrequencyUnit">
+          <el-input v-model="form.usageFrequencyUnit" placeholder="请输入药品频次" />
+        </el-form-item>
+        <el-form-item label="每次⽤药数量" prop="usagePerUseCount">
+          <el-input v-model="form.usagePerUseCount" placeholder="请输入每次⽤药数量" />
+        </el-form-item>
+        <el-form-item label="每次⽤药单位" prop="usagePerUseUnit">
+          <el-input v-model="form.usagePerUseUnit" placeholder="请输入每次⽤药单位" />
+        </el-form-item>
+        <el-form-item label="天数" prop="usageDays">
+          <el-input v-model="form.usageDays" placeholder="请输入天数" />
+        </el-form-item>
+        <el-form-item label="药品数量" prop="saleAmount">
+          <el-input v-model="form.saleAmount" placeholder="请输入药品数量" />
+        </el-form-item>
+        <el-form-item label="药品数量单位" prop="saleUnit">
+          <el-input v-model="form.saleUnit" placeholder="请输入药品数量单位" />
+        </el-form-item>
+        <el-form-item label="药品说明书" prop="instructions">
+          <el-input v-model="form.instructions" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="药品说明书" prop="approvalNumber">
+          <el-input v-model="form.approvalNumber" placeholder="请输入药品说明书" />
+        </el-form-item>
+        <el-form-item label="产品ID" prop="productId">
+          <el-input v-model="form.productId" placeholder="请输入产品ID" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listPrescribeDrug, getPrescribeDrug, delPrescribeDrug, addPrescribeDrug, updatePrescribeDrug, exportPrescribeDrug } from "@/api/hisStore/prescribeDrug";
+
+export default {
+  name: "HisPrescribeDrug",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 处方药品表格数据
+      prescribeDrugList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        prescribeId: null,
+        drugCommonName: null,
+        drugSpecification: null,
+        usageMethod: null,
+        usageFrequencyUnit: null,
+        usagePerUseCount: null,
+        usagePerUseUnit: null,
+        usageDays: null,
+        saleAmount: null,
+        saleUnit: null,
+        instructions: null,
+        approvalNumber: null,
+        productId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询处方药品列表 */
+    getList() {
+      this.loading = true;
+      listPrescribeDrug(this.queryParams).then(response => {
+        this.prescribeDrugList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        drugId: null,
+        prescribeId: null,
+        drugCommonName: null,
+        drugSpecification: null,
+        usageMethod: null,
+        usageFrequencyUnit: null,
+        usagePerUseCount: null,
+        usagePerUseUnit: null,
+        usageDays: null,
+        saleAmount: null,
+        saleUnit: null,
+        instructions: null,
+        approvalNumber: null,
+        productId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.drugId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加处方药品";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const drugId = row.drugId || this.ids
+      getPrescribeDrug(drugId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改处方药品";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.drugId != null) {
+            updatePrescribeDrug(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          } else {
+            addPrescribeDrug(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const drugIds = row.drugId || this.ids;
+      this.$confirm('是否确认删除处方药品编号为"' + drugIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delPrescribeDrug(drugIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有处方药品数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportPrescribeDrug(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 426 - 0
src/views/hisStore/storeActivity/index.vue

@@ -0,0 +1,426 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="活动标题" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入活动标题"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['store:storeActivity:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['store:storeActivity:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['store:storeActivity:remove']"
+        >删除</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+    <el-tabs type="card" v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane label="正常" name="1"></el-tab-pane>
+      <el-tab-pane label="关闭" name="0"></el-tab-pane>
+    </el-tabs>
+
+    <el-table  height="500" border v-loading="loading" :data="storeActivityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="ID" align="center" prop="activityId" />
+      <el-table-column label="活动标题" align="center" prop="title" />
+      <!-- <el-table-column label="描述" show-overflow-tooltip align="center" prop="descs" /> -->
+
+      <el-table-column label="弹框广告图" align="center" width="120">
+        <template slot-scope="scope">
+          <el-popover
+            placement="right"
+            title=""
+            trigger="hover"
+          >
+            <img slot="reference" :src="scope.row.logoUrl" width="100">
+            <img :src="scope.row.logoUrl" style="max-width: 150px;">
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column label="分享数" align="center" prop="shareNumber" />
+      <el-table-column label="状态" align="center" prop="status" >
+          <template slot-scope="scope">
+              <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+          </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['store:storeActivity:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['store:storeActivity:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改活动对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <!-- <el-form-item label="描述" prop="descs">
+          <el-input v-model="form.descs" type="textarea" placeholder="请输入内容" />
+        </el-form-item> -->
+        <el-form-item label="弹框广告图" prop="logoUrl">
+          <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150" />
+        </el-form-item>
+        <el-form-item label="BANNER图" prop="images">
+          <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
+        </el-form-item>
+        <el-form-item label="活动商品" prop="productIds"  >
+              <el-row  >
+                <el-col >
+                      <el-button plain  type="primary" icon="el-icon-plus" @click="handleAddProduct">添加商品</el-button>
+                </el-col>
+              </el-row>
+              <el-table border width="100%" style="margin-top:5px;"  :data="products">
+                <el-table-column label="商品ID" align="center" prop="productId" />
+                <el-table-column label="商品图片" align="center" width="100">
+                  <template slot-scope="scope">
+                    <el-popover
+                      placement="right"
+                      title=""
+                      trigger="hover"
+                    >
+                      <img slot="reference" :src="scope.row.image" width="50">
+                      <img :src="scope.row.image" style="max-width: 50px;">
+                    </el-popover>
+                  </template>
+                </el-table-column>
+                <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+                <el-table-column label="售价" align="center"  prop="price"  >
+                   <template slot-scope="scope">
+                    <div v-if="scope.row.price!=null">
+                         {{scope.row.price.toFixed(2)}}
+                    </div>
+                  </template>
+                </el-table-column>
+                <el-table-column label="操作" align="center" width="100px" >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="mini"
+                      type="text"
+                      icon="el-icon-delete"
+                      @click="handleProductDelete(scope.row)"
+                    >删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+        </el-form-item>
+        <el-form-item label="活动内容">
+          <editor ref="myeditor"   @on-text-change="updateText" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">正常</el-radio>
+            <el-radio label="0">关闭</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="product.title" v-if="product.open"  :visible.sync="product.open" width="1000px" append-to-body>
+        <product-select  ref="product"  @selectProduct="selectProduct" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listStoreActivity, getStoreActivity, delStoreActivity, addStoreActivity, updateStoreActivity, exportStoreActivity } from "@/api/hisStore/storeActivity";
+import Material from '@/components/Material'
+import singleImg from '@/components/Material/single'
+import Editor from '@/components/Editor/wang';
+import productSelect from "../components/productSelect";
+
+export default {
+  name: "HisStoreActivity",
+  components: {
+    productSelect,
+    Editor,
+    Material,
+    singleImg,
+  },
+  watch: {
+    imageArr: function(val) {
+      this.form.logoUrl = val.join(',')
+    },
+    photoArr: function(val) {
+      this.form.images = val.join(',')
+    },
+  },
+  data() {
+    return {
+      photoArr:[],
+      products:[],
+      product:{
+        open:false,
+        title:"商品选择"
+      },
+      statusOptions:[],
+      imageArr:[],
+      activeName:"1",
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 活动表格数据
+      storeActivityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        title: null,
+        descs: null,
+        logoUrl: null,
+        images: null,
+        productIds: null,
+        content: null,
+        status: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getDicts("common_status").then((response) => {
+      this.statusOptions = response.data;
+    });
+
+    this.getList();
+  },
+  methods: {
+    selectProduct(row){
+      for(var i=0;i<this.products.length;i++){
+        if(this.products[i].productId==row.productId){
+          return;
+        }
+      }
+      this.products.push(row);
+    },
+    handleAddProduct(){
+      this.product.open=true;
+    },
+    handleProductDelete(row){
+       this.products.splice(this.products.findIndex(item => item.productId === row.productId), 1)
+    },
+    updateText(text){
+      this.form.content=text
+    },
+    handleClick(tab, event) {
+      this.queryParams.status=tab.name;
+      this.getList();
+    },
+    /** 查询活动列表 */
+    getList() {
+      this.loading = true;
+      listStoreActivity(this.queryParams).then(response => {
+        this.storeActivityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        activityId: null,
+        title: null,
+        descs: null,
+        logoUrl: null,
+        images: null,
+        productIds: null,
+        content: null,
+        createTime: null,
+        status: "1"
+      };
+      this.imageArr=[];
+      this.photoArr=[];
+      this.products=[];
+      this.products=[];
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.activityId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加活动";
+      setTimeout(() => {
+        this.$refs.myeditor.setText("");
+      }, 200);
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const activityId = row.activityId || this.ids
+      getStoreActivity(activityId).then(response => {
+        this.form = response.activity;
+        this.form.status=this.form.status.toString();
+        if(this.form.logoUrl!=null){
+          this.imageArr=this.form.logoUrl.split(',');
+        }
+        if(this.form.images!=null){
+          this.photoArr=this.form.images.split(',');
+        }
+        this.products=response.products;
+        this.open = true;
+        this.title = "修改活动";
+        setTimeout(() => {
+          if(this.form.content==null){
+            this.$refs.myeditor.setText("");
+          }
+          else{
+            this.$refs.myeditor.setText(this.form.content);
+          }
+        }, 200);
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          var productIds=[];
+          this.products.forEach(element => {
+              productIds.push(element.productId);
+          });
+          this.form.productIds=productIds.toString();
+          if (this.form.activityId != null) {
+            updateStoreActivity(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          } else {
+            addStoreActivity(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const activityIds = row.activityId || this.ids;
+      this.$confirm('是否确认删除活动编号为"' + activityIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delStoreActivity(activityIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有活动数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportStoreActivity(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio