Browse Source

线上购买套餐&协议修改&早筛管理

hurixing 1 năm trước cách đây
mục cha
commit
7d0bd0da84

+ 2 - 2
public/index.html

@@ -211,8 +211,8 @@
   <script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.1/libs/hls.min.0.13.2m.js"></script>
   <!--播放器脚本文件-->
   <script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.1/tcplayer.v4.2.1.min.js"></script>
-
-
+  <!-- 微信js-sdk -->
+  <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
   <div id="app">
     <div id="loader-wrapper">
       <div id="loader"></div>

+ 17 - 0
src/api/ea/index.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function getUserList(query) {
+    return request({
+        url: "/ea/user/list",
+        method: 'post',
+        data: query
+    })
+}
+
+export function getDetectInfoList(query) {
+    return request({
+        url: "/ea/detectInfo/list",
+        method: 'post',
+        data: query
+    })
+}

+ 21 - 0
src/api/patient/index.js

@@ -250,4 +250,25 @@ export function resetPasswordSys(query) {
     method: 'post',
     data: query
   })
+}
+
+/**
+ * 微信js-sdk配置
+ * @param {} url 
+ * @returns 
+ */
+export function getWxConfig(url) {
+  return request({
+    url: '/wx/tencent/config?url=' + url,
+    method: 'get'
+  })
+}
+
+
+export function wXTencentPhoneSave(query) {
+  return request({
+    url: `/wx/tencent/save/phone`,
+    method: 'post',
+    data: query
+  })
 }

+ 26 - 0
src/api/wx/applicationBlank/index.js

@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 查询微信申请列表
+export function listBlank(query) {
+    return request({
+      url: 'wx/application/blank/list',
+      method: 'post',
+      data: query
+    })
+  }
+
+// 查询微信申请详细
+// export function getBlank(id) {
+//   return request({
+//     url: '/wx/application/blank/' + id,
+//     method: 'get'
+//   })
+// }
+
+
+export function updatePayStatusFulfill(id) {
+  return request({
+    url: '/wx/application/blank/update/payStatusFulfill/' + id,
+    method: 'get'
+  })
+}

+ 80 - 9
src/layout/components/Navbar.vue

@@ -28,8 +28,9 @@
             ref="qrTrigger"
             @mouseenter.native="initQRCode"
             @mouseleave.native="destroyQRCode"
+            @click.native="handleDownloadClick"
           >
-            <span>公众号二维码</span>
+            <span>二维码</span>
           </el-dropdown-item>
 
           <el-dropdown-item divided @click.native="logout">
@@ -43,8 +44,8 @@
       v-show="showQR" 
       ref="qrPopup" 
       class="qr-popup"
-      @mouseenter.native="showQR = true"
-      @mouseleave.native="destroyQRCode"
+      @mouseenter="showQR = true"
+      @mouseleave="destroyQRCode"
     ></div>
 
   </div>
@@ -68,10 +69,10 @@ export default {
   data() {
     return {
       isActive: false,  // 根据状态设置 isActive 的值
-       showQR: false,
+      showQR: false,
       qrcodeInstance: null,
       triggerRect: null,
-      dockerId: ""
+      doctorId: "",
     };
   },
   computed: {
@@ -84,7 +85,8 @@ export default {
       get() {
         return this.$store.state.settings.topNav
       }
-    }
+    },
+    
   },
   created() {
     this.isActive = this.$store.getters.info.isOnline == 0
@@ -94,10 +96,71 @@ export default {
     this.destroyQRCode();
   },
   methods: {
+    async handleDownloadClick(event) {
+      try {
+        await this.$nextTick() // 确保二维码渲染完成
+        this.downloadQRCode()
+      } catch (error) {
+        console.error('下载失败:', error)
+        this.$message.error('二维码生成失败,请重试')
+      }
+    },
+
+    downloadQRCode() {
+      const container = this.$refs.qrPopup
+      const canvas = container.querySelector('canvas')
+      
+      if (!canvas) {
+        throw new Error('二维码未找到')
+      }
+
+      // 添加白色边距(在生成时设置margin参数)
+      const margin = 4; // 边距模块数(建议4-6)
+      
+      // 创建下载链接
+      const link = document.createElement('a')
+      link.href = canvas.toDataURL('image/png')
+      
+      // 添加白色边框(备用方案)
+      const ctx = canvas.getContext('2d')
+      const padding = margin * 4; // 每个模块的像素数(通常4px/模块)
+      
+      // 获取原始图像数据
+      const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height)
+      
+      // 创建带边距的新画布
+      const paddedCanvas = document.createElement('canvas')
+      const newWidth = canvas.width + padding * 2
+      const newHeight = canvas.height + padding * 2
+      paddedCanvas.width = newWidth
+      paddedCanvas.height = newHeight
+      const paddedCtx = paddedCanvas.getContext('2d')
+      
+      // 填充白色背景
+      paddedCtx.fillStyle = 'white'
+      paddedCtx.fillRect(0, 0, newWidth, newHeight)
+      
+      // 绘制原始二维码(带边距)
+      paddedCtx.drawImage(
+        canvas,
+        padding, padding,  // x/y 偏移
+        canvas.width, canvas.height
+      )
+      
+      // 更新下载链接
+      link.href = paddedCanvas.toDataURL('image/png')
+      link.download = `qrcode_doctor_${this.doctorId}_${Date.now()}.png`
+      
+      // 触发下载
+      document.body.appendChild(link)
+      link.click()
+      document.body.removeChild(link)
+      
+      this.$message.success('二维码下载成功')
+    },
     getUser() {
       getUserProfile().then(response => {
-        this.dockerId = response.data.id;
-        
+        this.doctorId = response.data.userId;
       });
     },
     initQRCode(e) {
@@ -111,10 +174,18 @@ export default {
         
         // 清空容器
         container.innerHTML = '';
+
+        var url = ""
+
+        if (process.env.NODE_ENV == 'production') {
+            url ='https://yaorong.yaorongmedical.com/hcp/officialAccounts/pay?doctorId='+this.doctorId;
+          } else {
+            url = 'http://yaorongtest.yaorongmedical.com/hcp/officialAccounts/pay?doctorId='+this.doctorId;
+          }
         
         // 生成二维码
         this.qrcodeInstance = new QRCode(container, {
-          text: 'http://yaorongtest.yaorongmedical.com/hcp/officialAccounts/patientData?doctorId='+this.doctorId,
+          text: url,
           width: 150,
           height: 150,
           colorDark: '#000000',

+ 50 - 43
src/views/doctor/physician/index.vue

@@ -76,14 +76,18 @@
         <el-row>
           <el-col :span="12">
             <el-form-item prop="certificate" label="*医师资格证">
-              <label slot="label"><span style="color:red">* </span>医师资格证</label>
+              <label slot="label">
+                <!-- <span style="color:red">* </span> -->
+                医师资格证</label>
               <ImageUpload ref="imgUpload" v-if="open" :imgList="form.certificate" :paramsData="{ dirName: 'hcp' }"
                 :limit="1" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item prop="certificate" label="*医师头像">
-              <label slot="label"><span style="color:red">* </span>医师头像</label>
+              <label slot="label">
+                <!-- <span style="color:red">* </span> -->
+                医师头像</label>
               <ImageUpload ref="avatar" v-if="open" :imgList="form.avatar" :paramsData="{ dirName: 'hcp' }" :limit="1" />
             </el-form-item>
           </el-col>
@@ -107,8 +111,12 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="身份证" prop="idCard">
-              <el-input v-model.trim="form.idCard" placeholder="请输入身份证" maxlength="18" />
+            <el-form-item label="职称" prop="title">
+              <el-select v-model="form.title" placeholder="请选择职称">
+                <el-option v-for="dict in dict.type.physician_title" :key="dict.value" :label="dict.label"
+                  :value="dict.value"></el-option>
+              </el-select>
+              <!-- <el-input v-model.trim="form.title" placeholder="请输入职称" maxlength="30" /> -->
             </el-form-item>
           </el-col>
         </el-row>
@@ -137,12 +145,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="职称" prop="title">
-              <el-select v-model="form.title" placeholder="请选择职称">
-                <el-option v-for="dict in dict.type.physician_title" :key="dict.value" :label="dict.label"
-                  :value="dict.value"></el-option>
-              </el-select>
-              <!-- <el-input v-model.trim="form.title" placeholder="请输入职称" maxlength="30" /> -->
+            <el-form-item label="身份证" prop="idCard">
+              <el-input v-model.trim="form.idCard" placeholder="请输入身份证" maxlength="18" />
             </el-form-item>
             <!-- <el-form-item label="状态">
               <el-radio-group v-model="form.status">
@@ -277,14 +281,14 @@ export default {
             trigger: 'blur'
           }
         ],
-        email: [
-          { required: true, message: "邮箱不能为空", trigger: "blur" },
-          {
-            type: "email",
-            message: "请输入正确的邮箱地址",
-            trigger: ["blur", "change"]
-          }
-        ],
+        // email: [
+        //   { required: true, message: "邮箱不能为空", trigger: "blur" },
+        //   {
+        //     type: "email",
+        //     message: "请输入正确的邮箱地址",
+        //     trigger: ["blur", "change"]
+        //   }
+        // ],
         mobile: [
           { required: true, message: "手机号不能为空", trigger: "blur" },
           {
@@ -293,29 +297,29 @@ export default {
             trigger: "blur"
           }
         ],
-        idCard: [
-          { required: true, message: "身份证不能为空", trigger: "blur" },
-          {
-            pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
-            message: "请输入正确的身份证",
-            trigger: "blur"
-          }
-        ],
+        // idCard: [
+        //   { required: true, message: "身份证不能为空", trigger: "blur" },
+        //   {
+        //     pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
+        //     message: "请输入正确的身份证",
+        //     trigger: "blur"
+        //   }
+        // ],
         departmentName: [
           { required: true, message: "科室不能为空", trigger: "blur" }
         ],
         title: [
           { required: true, message: "职称不能为空", trigger: "blur" }
         ],
-        price: [
-          { required: true, message: "问诊价格不能为空", trigger: "blur" }
-        ],
-        speciality: [
-          { required: true, message: "擅长不能为空", trigger: "blur" }
-        ],
-        sex: [
-          { required: true, message: "性别不能为空", trigger: "blur" }
-        ],
+        // price: [
+        //   { required: true, message: "问诊价格不能为空", trigger: "blur" }
+        // ],
+        // speciality: [
+        //   { required: true, message: "擅长不能为空", trigger: "blur" }
+        // ],
+        // sex: [
+        //   { required: true, message: "性别不能为空", trigger: "blur" }
+        // ],
       },
       department:[],
       debouncedSubmitForm: this.debounce(this.submitForm, 3000), // 防抖函数,1秒内只能触发一次
@@ -431,6 +435,7 @@ export default {
     handleAdd(row) {
       this.reset();
       this.open = true;
+      this.form.sex = "0"
       this.title = "添加医师";
     },
     /** 修改按钮操作 */
@@ -475,14 +480,16 @@ export default {
           // } else {
           //   catchForm.certificate = catchForm.certificate ? catchForm.certificate.toString() : undefined
           // }
-          if (this.$refs['imgUpload'].fileList.length == 0) {
-            this.$modal.msgError('请上传资格证')
-            return
-          }
-          if (this.$refs['avatar'].fileList.length == 0) {
-            this.$modal.msgError('请上传医师头像')
-            return
-          }
+
+          
+          // if (this.$refs['imgUpload'].fileList.length == 0) {
+          //   this.$modal.msgError('请上传资格证')
+          //   return
+          // }
+          // if (this.$refs['avatar'].fileList.length == 0) {
+          //   this.$modal.msgError('请上传医师头像')
+          //   return
+          // }
           catchForm.certificate = []
           this.$refs['imgUpload'].fileList.forEach(item => {
             catchForm.certificate.push(item.url)

+ 146 - 0
src/views/ea/user/index.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form-item label="手机号" prop="phone">
+            <el-input
+            v-model="queryParams.phone"
+            placeholder="请输入手机号"
+            clearable
+            @keyup.enter.native="handleQuery"
+            />
+        </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-table v-loading="loading" :data="userList">
+        <el-table-column label="用户名" align="center" prop="name" />
+        <el-table-column label="手机号" align="center" prop="phone">
+            <template slot-scope="scope">
+                {{base64Decode(scope.row.phone)}}
+            </template>
+        </el-table-column>
+        <el-table-column label="年龄" align="center" prop="age" />
+        <el-table-column label="性别" align="center" prop="sex" >
+            <template slot-scope="scope">
+                <span v-if="scope.row.sex === 0">男</span>
+                <span v-if="scope.row.sex === 1">女</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" align="center" prop="createTime" />
+        <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="eaDetectInfoByPhone(scope.row.phone)"
+                >测试记录</el-button>
+            </template>
+        </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.limit"
+          @pagination="getList" />
+
+    <el-dialog title="测试记录" :visible.sync="eaDetectInfoOpen" width="700px" append-to-body destroy-on-close>
+        <el-table :data="eaDetectInfoList">
+             <el-table-column label="测试日期" align="center" prop="createTime" />
+             <el-table-column label="百分比正确率" align="center" prop="score" >
+                <template slot-scope="scope">
+                    {{scope.row.score}}%
+                </template>
+             </el-table-column>
+             <el-table-column label="平均反应时间" align="center" prop="aveTime" >
+                <template slot-scope="scope">
+                    {{scope.row.aveTime}}秒
+                </template>
+             </el-table-column>
+             <el-table-column label="访问来源" align="center" prop="sourceCode" />
+        </el-table>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {getUserList,getDetectInfoList} from "@/api/ea"
+import CryptoJS from 'crypto-js'
+
+export default {
+    name: "eaUser",
+    data() {
+        return {
+            // 遮罩层
+            loading: true,
+           // 查询参数
+            queryParams: {
+                page: 1,
+                limit: 10,
+                phone: null,
+            },
+            // 显示搜索条件
+            showSearch: true,
+            // 早筛用户
+            userList:[],
+            total: 0,
+            eaDetectInfoList: [],
+            eaDetectInfoParams:{
+                page: 1,
+                limit: 10,
+                phone: null,
+            },
+            eaDetectInfoOpen: false,
+            detectInfoTotal: 0
+        }
+    },
+    created() {
+        this.getList();
+    },
+    methods:{
+        base64Decode(base64Str) {
+            try {
+                // 处理 Unicode 字符
+                const decodedData = atob(base64Str);
+                // 将 Latin1 转换为 UTF-8
+                const utf8Decoder = new TextDecoder('utf-8');
+                return utf8Decoder.decode(new Uint8Array(decodedData.split('').map(c => c.charCodeAt(0))));
+            } catch (error) {
+                console.error('解码失败:', error);
+                return '';
+            }
+        },
+        eaDetectInfoByPhone(phone) {
+            this.eaDetectInfoParams.phone = phone
+            getDetectInfoList(this.eaDetectInfoParams).then(resp=>{
+                this.eaDetectInfoOpen = true
+                this.eaDetectInfoList = resp.data.records;
+                this.detectInfoTotal = resp.data.total;
+            })
+        },
+        getList() {
+            this.loading = true;
+            getUserList(this.queryParams).then(response => {
+                this.userList = response.data.records;
+                this.total = response.data.total;
+                this.loading = false;
+            });
+        },
+        /** 搜索按钮操作 */
+        handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+            this.queryParams.phone = null
+            this.handleQuery();
+        },
+    }
+}
+</script>
+
+<style>
+
+</style>

+ 1 - 1
src/views/equipment/list/index.vue

@@ -71,7 +71,7 @@
           </el-select>
         </el-form-item>
         <el-form-item prop="sn" label="设备编码">
-          <el-input :disabled="form.id != undefined" v-model.trim="form.sn" placeholder="请输入设备编码" maxlength="30"
+          <el-input :disabled="form.id != undefined" v-model.trim="form.sn" placeholder="请输入设备编码" maxlength="100"
             style="width: 210px;" />
         </el-form-item>
         <el-form-item prop="location" label="设备位置" v-if="form.equipmentType == 'B' || form.equipmentType == 'C'">

+ 1 - 1
src/views/officialAccounts/patientData/index.vue

@@ -145,7 +145,7 @@
       <!-- 诊断结果多选题组 -->
     <MultiSelect
       v-model="formData.diagnoseResult"
-      label="诊结果(多选)"
+      label="诊结果(多选)"
       :options="getLabelForValue(dict.type.diagnose_result_type)"
     />
 

+ 122 - 95
src/views/officialAccounts/pay/index.vue

@@ -1,12 +1,5 @@
 <template>
   <div class="package-container">
-    <van-nav-bar
-      title="服务套餐"
-      left-text="返回"
-      left-arrow
-      @click-left="goBack()"
-    />
-
     <van-cell
     title="设备押金 1200(元)"
     label="设备押金在服务到期后,若不再进行续费,设备完好情况下,联系工作人员退款。"
@@ -55,18 +48,47 @@
     </div>
 
 
-    <van-dialog v-model="payShow" title="支付确认" show-cancel-button :lazy-render="false" @confirm="handleWechatAuth">
-    
+    <van-dialog v-model="payShow" title="支付确认" show-cancel-button :lazy-render="false" @confirm="handleWechatAuth" :before-close="beforeClose">
+      <van-field
+        v-model="payForm.phone"
+        label="手机号"
+        placeholder="请输入手机号"
+        :error-message="errorMobile"
+        @input="mobileError"
+        @blur="mobileError"
+      />
+
+      <div style="margin: 1rem;">
+        <van-checkbox v-model="payForm.checked" checked-color="#07c160">
+          <div style="font-size:0.8rem;">阅读并同意
+            <el-link type="primary" style="vertical-align: top;" @click.stop="agreementShow = true">《服务协议》</el-link>
+            <!-- 和
+            <el-link type="primary" style="vertical-align: top;">《隐私政策》</el-link> -->
+          </div>
+          </van-checkbox>
+      </div>
+    </van-dialog>
+
+
+    <van-dialog v-model="agreementShow" title="未来蓝豚强脑系统服务协议" :lazy-render="false">
+      <div style="height: 68vh; overflow-x: hidden;">
+        <xy />
+      </div>
     </van-dialog>
   </div>
 </template>
 
 <script>
+import xy from './xy.vue';
 import {tencentLearnPackage} from '@/api/comboMeal/index'
-import { symmetryDecryptWX } from '@/utils/secret.js'
-import {wXTencentSave} from '@/api/patient/index'
+import { symmetryDecryptWX,symmetryEncryptWX } from '@/utils/secret.js'
+import {wXTencentSave,getWxConfig,wXTencentPhoneSave} from '@/api/patient/index'
+import { Toast } from 'vant';
 
 export default {
+  components: {
+    xy
+  },
   data() {
     return {
       packages: [
@@ -74,12 +96,26 @@ export default {
       WxTencentForm: {},
       payShow: false,
       learningPackageId: "",
-      loading: false
+      loading: false,
+      payForm:{
+        phone: "",
+        checked: false
+      },
+      agreementShow:false,
+      errorMobile:""
     }
   },
   created() {
     this.getLearnPackage()
   },
+  // async mounted() {
+  //   try {
+  //     await this.initWxConfig();
+  //     console.log('微信 SDK 初始化成功');
+  //   } catch (error) {
+  //     console.error('微信 SDK 初始化失败:', error);
+  //   }
+  // },
   methods: {
     getLearnPackage(){
         tencentLearnPackage().then(resp=>{
@@ -103,23 +139,13 @@ export default {
             });
             if(Object.keys(this.$route.query).length > 0){
                 const query = this.$route.query;
-                this.WxTencentForm = JSON.parse(symmetryDecryptWX(decodeURIComponent(this.$route.query.userInfo)));
-                if(query.code && query.packagesId && query.state){
-                    this.handleSubmit(query.code,query.packagesId,query.state);
+                // this.WxTencentForm = JSON.parse(symmetryDecryptWX(decodeURIComponent(this.$route.query.userInfo)));
+                if(query.code  && query.state && query.payUser){
+                    const payUser = JSON.parse(symmetryDecryptWX(query.payUser))
+                    console.log(payUser)
+                    this.handleSubmit(query.code,payUser.packageId,query.state,payUser.doctorId,payUser.mobile);
                 }
                 this.WxTencentForm.equipmentPledge = 1
-            }else {
-                this.$router.push({
-                      path: '/officialAccounts/patientData',
-                })
-            }
-        })
-    },
-    goBack(){
-        this.$router.push({
-            path: '/officialAccounts/patientData',
-            query: {
-                payUserInfo: symmetryDecryptWX(this.$route.query.userInfo)
             }
         })
     },
@@ -130,51 +156,29 @@ export default {
         this.payShow = true
         this.learningPackageId= row.id
     },
-    // 加载微信JS-SDK
-    loadWechatSDK() {
-      return new Promise((resolve, reject) => {
-        if (window.wx) {
-          resolve(window.wx);
-          return;
-        }
-
-        const script = document.createElement('script');
-        script.src = 'https://res.wx.qq.com/open/js/jweixin-1.6.0.js';
-        script.onload = () => {
-          // SDK加载成功后初始化配置
-          this.initWxConfig().then(resolve).catch(reject);
-        };
-        script.onerror = () => {
-          reject(new Error('微信SDK加载失败'));
-        };
-        document.head.appendChild(script);
-      });
-    },
     // 初始化微信配置
-    initWxConfig() {
-      return this.$http.get('/api/wechat/config', {
-        params: {
-          url: window.location.href.split('#')[0]
-        }
-      }).then(response => {
-        const { appId, timestamp, nonceStr, signature } = response.data;
+    // initWxConfig() {
+    //   return getWxConfig(
+    //       window.location.href.split('#')[0]
+    //   ).then(response => {
+    //     const { appId, timestamp, nonceStr, signature } = response.data;
 
-        wx.config({
-          debug: process.env.NODE_ENV === 'development',
-          appId,
-          timestamp,
-          nonceStr,
-          signature,
-          jsApiList: ['chooseWXPay']
-        });
+    //     wx.config({
+    //       debug: process.env.NODE_ENV === 'development',
+    //       appId,
+    //       timestamp,
+    //       nonceStr,
+    //       signature,
+    //       jsApiList: ['chooseWXPay'] 
+    //     });
 
-        return new Promise((resolve, reject) => {
-          wx.ready(() => resolve());
-          wx.error((res) => reject(new Error(`SDK配置失败: ${JSON.stringify(res)}`)));
-        });
-      });
-    },
-    handleSubmit(code,id,state) {
+    //     return new Promise((resolve, reject) => {
+    //       wx.ready(() => resolve());
+    //       wx.error((res) => reject(new Error(`SDK配置失败: ${JSON.stringify(res)}`)));
+    //     });
+    //   });
+    // },
+    handleSubmit(code,id,state,doctorId,mobile) {
         this.loading = true;
         console.log(this.WxTencentForm)
         if(this.WxTencentForm){
@@ -183,26 +187,18 @@ export default {
                 code: code,
                 packageId: id,
                 equipmentPledge: '1',
-                name: this.WxTencentForm.name,
-                gender: this.WxTencentForm.gender,
-                age: this.WxTencentForm.age,
-                mobile: this.WxTencentForm.mobile,
-                idCard: this.WxTencentForm.idCard,
-                birthDate: this.WxTencentForm.birthDate,
-                education: this.WxTencentForm.education,
-                medicalCurrentTypes: this.WxTencentForm.medicalCurrentTypes.toString(),
-                medicalHisTypes: this.WxTencentForm.medicalHisTypes.toString(),
-                geneticDiseases: this.WxTencentForm.geneticDiseases.toString(),
-                diagnoseResult: this.WxTencentForm.diagnoseResult.toString(),
-                tags: this.WxTencentForm.tags.toString(),
-                doctorName: this.WxTencentForm.doctorName,
-                doctorId: this.WxTencentForm.doctorId,
+                mobile: mobile,
+                doctorId: doctorId,
             }
-            wXTencentSave(params).then(resp => {
+            console.log(params)
+            wXTencentPhoneSave(params).then(resp => {
                 if(resp.code == 201) {
                   console.log("重复调用")
                   this.$router.push({
-                      path: '/officialAccounts/patientData',
+                      path: '/officialAccounts/pay',
+                      query: {
+                          doctorId: doctorId
+                      }
                   })
                   return
                 }
@@ -257,6 +253,20 @@ export default {
             }
         })
     },
+    mobileError() {
+      const mobile = this.payForm.phone.trim()
+      const mobilePattern = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/
+      if(!mobile) {
+        this.errorMobile = "手机号不能为空";
+        return false;
+      }
+      if(!mobilePattern.test(mobile)) {
+        this.errorMobile = "请输入正确的手机号码"
+        return false;
+      }
+      this.errorMobile = ''
+      return true;
+    },
     // 支付失败处理
     handlePaymentFailure(error) {
       console.log("失败")
@@ -267,18 +277,36 @@ export default {
             }
         })
     },
+    beforeClose(action, done) {
+      if (action === 'confirm') {
+        if(this.mobileError() && this.payForm.checked) {
+          done();
+        } else {
+          done(false)
+        }
+      } else {
+        done();
+      }
+    },
     handleWechatAuth() {
+      if(this.errorMobile != "") {
+        return;
+
+      }
+
+      if(!this.payForm.checked) {
+          Toast("请仔细阅读服务协议,并勾选")
+          return;
+      }
+
       const currentPath = window.location.pathname;
-      const currentQuery = { ...this.$route.query,
-        packagesId: this.learningPackageId,
-      };
-      let redirectPath = currentPath;
-      const queryString = Object.keys(currentQuery)
-        .map(key => `${key}=${currentQuery[key]}`)
-        .join('&');
-      if (queryString) {
-        redirectPath += `?${queryString}`;
+      const query = {
+        doctorId: this.$route.query.doctorId,
+        packageId: this.learningPackageId,
+        mobile: this.payForm.phone
       }
+      let redirectPath = currentPath+"?payUser="+symmetryEncryptWX(JSON.stringify(query));
+      console.log(redirectPath)
       const redirectUri = encodeURIComponent(
         window.location.origin + redirectPath
       );
@@ -288,7 +316,6 @@ export default {
         scope: 'snsapi_base',
         state: this.generateState()
       }
-      
       const authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${params.appId}&redirect_uri=${params.redirectUri}&response_type=code&scope=${params.scope}&state=${params.state}#wechat_redirect`;
       window.location.href = authUrl
     },

+ 306 - 0
src/views/officialAccounts/pay/xy.vue

@@ -0,0 +1,306 @@
+<template>
+  <div>
+    <div>
+      <!-- <div style="font-weight: bold; text-align: center;"><h4>未来蓝豚强脑系统服务协议</h4></div> -->
+      <div class="row">
+        <!-- 出租方 -->
+        <div class="col">
+          <div class="content-block">
+            <p class="info-item">服务方(甲方):北京耀荣康健医疗科技发展有限公司</p>
+          </div>
+        </div>
+      </div>
+      <div class="row">
+        <!-- 承租方 -->
+        <div class="col">
+          <div class="content-block">
+            <p class="info-item">用户方(乙方或委托人):用户个人或合作医院</p>
+          </div>
+        </div>
+      </div>
+
+      <div class="row">
+        <div class="col">
+          <div class="content-block">
+            <p class="info-item">联系电话:400-086-1638 </p>
+          </div>
+        </div>
+      </div>
+    <div style="padding:1rem; font-size: 12px">
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;<span style="font-weight: bold;">根据《中华人民共和国民法典》及有关规定,为明确甲乙双方权利义务关系,甲乙双方在平等自愿的前提下,经协商一致签订本协议。如乙方在18周岁以下,请在监护人陪同且同意的情况下签署本协议。具体条款如下:</span>
+      <br />  <span style="font-weight: bold;">第一条服务内容及期限</span>  <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.1 甲方通过未来蓝豚强脑系统及辅助设备向乙方提供认知功能障碍训练服务,从_____年_____月_____日起到_____年_____月_____日止,服务期为_____天。 <br />
+
+      服务费:_____元(大写_______元整);辅助设备押金:______元(大写_______元整)。 <br />
+      <span style="font-weight: bold;">第二条支付方式及发票 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.1甲方提供支付宝、微信、银行卡、信用卡等支付方式,乙方应于本合同签订之日一次性支付全额服务费和押金。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.2服务期限届满,乙方应及时将辅助设备归还甲方,甲方收到辅助设备后经检测确认无损坏后的3个工作日内无息退还押金,如遇节假日则顺延。 <br />
+      <span style="font-weight: bold;"> 第三条服务期限及续费</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.1服务期内,乙方提前终止协议需与甲方达成一致,若未经允许擅自终止协议、归还辅助设备,乙方需要按原服务期计算服务费,不退已交服务费,如发生经甲方认可的不可抗力因素导致乙方不能继续使用,本协议服务期限自乙方、乙方委托人归还辅助设备之日终止。
+
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.2服务期满后,乙方应将辅助设备归还甲方。甲方在收到辅助设备后将进行检测,确认辅助设备状态符合归还标准。在乙方结清所有相关费用(包括但不限于服务费、押金、违约金及其他可能产生的费用)后,本协议终止。 <br />
+
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.3如乙方需续费,可在服务期满前10个工作日续签服务协议,支付服务费;或乙方通过辅助设备进行续费操作。在续费的情况下,原合同已支付辅助设备押金直接转为新服务协议的辅助设备押金,无需另行支付。续费收费标准见附件1。甲方保留对续费收费进行调整的权利。如遇调整,续费时的具体收费标准将以甲方在续费时公布的最新标准为准。
+      <br /><span style="font-weight: bold;">第四条甲乙双方权利与义务 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.1甲方在提供系统服务期间拥有辅助设备的所有权,乙方在系统服务期间拥有辅助设备的合法使用权。 <br />
+
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.2乙方全额支付服务费和押金后,甲方应当向乙方提供运行正常的辅助设备、自然故障的维修及更换,保证设备配置与清单一致。 <br />
+
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.3提供系统服务期间因辅助设备正常折旧而导致辅助设备无法正常使用或使用故障、辅助设备自然产生的硬件故障由甲方免费更换,因软件问题导致的使用问题由甲方协助解决。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.4乙方因不当使用造成辅助设备损坏导致维修的,甲方有权按照赔偿标准价目表(见附件2)从押金中划扣相应费用,乙方应于划扣后3个自然日内补足押金,3日后乙方未补足押金的,每逾期1日,甲方在结算辅助设备押金时有权加收乙方未补足押金部分的1%。辅助设备维修期间仍视为服务期的一部分,乙方需按照合同约定的服务费用标准继续支付费用。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.5因乙方原因导致辅助设备失去维修价值或无法维修的,甲方有权直接扣除乙方辅助设备全部押金作为补偿。辅助设备全部押金不足以抵扣辅助设备的,乙方应在甲方提出补偿请求后3个工作日内足额补偿。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.6乙方在服务期限届满后未归还辅助设备,甲方有权继续按协议约定标准收取相应服务费,并有权扣除辅助设备押金,要求乙方归还相应辅助设备,支付逾期使用服务费。
+      <br /> <span style="font-weight: bold;"> 第五条安全权利与义务</span> 
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.1在乙方使用甲方产品与服务的过程中,甲方将采取技术措施和其他必要措施(数据安全技术措施等)尽力保证网络安全、稳定运行,并防范网络违法犯罪活动。同时,乙方应遵守相关法律法规,不应从事违反法律法规或影响网站安全的行为,包括但不限于:违反网络安全规定和危害计算机信息网络安全的活动:如破坏或企图破坏安全保护措施,对服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取信息数据、非法入侵系统,包括接触未经许可的数据或进入未经许可的服务器账户等;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动。
+
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.2依据《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》等法律法规,甲方依法保障您对个人信息的权益,包含用户知情权、用户访问权、用户纠正权、用户被遗忘权、用户可携带权、用户拒绝权、用户限制处理权等。
+
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.3未经乙方事先书面同意,甲方不得与甲方以外的任何公司、组织、个人共享、协作、委托处理、转让、公开披露乙方的个人信息。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.4为了向乙方提供更完善、优质的产品和服务,某些服务将由合作方提供,基于乙方的单独同意,甲方仅会出于合法、正当、必要、特定明确的目的,对乙方的个人信息进行共享或协作,并且只会共享、协作为提供服务所必要的个人信息。甲方不会共享可以识别身份的个人信息,除非法律法规另有规定。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.5因法律法规、行业要求或其他涉及重大、实质性变更,导致本协议的更新或删减,甲方将依据具体情况以合适的方式通知乙方。 <br />
+      <span style="font-weight: bold;">第六条隐私政策</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.1本协议所指的“隐私”包括《电信和互联网用户个人信息保护规定》第四条规定的用户个人信息内容以及未来不时制定或修订的法律法规中明确规定的隐私应包括的内容。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.2当乙方接受并使用系统服务和辅助设备时,甲方即认为乙方已仔细阅读并理解、接受本协议,在服务开始后,乙方应提供不小于甲方服务开展所必要的个人信息,在此过程中,甲方承诺不会泄露乙方个人信息,并将履行安全义务,采用有效的安全技术措施保护个人信息和数据。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;6.3当服务结束时,为保障乙方隐私及信息安全,乙方需自行清理或处理保存在辅助设备中的相关数据、信息。服务期结束后,甲方将抹除辅助设备上乙方所有信息和数据,甲方不对辅助设备中的相关信息进行保存,因乙方原因导致的信息丢失等风险由乙方自行承担。
+      <br /><span style="font-weight: bold;">第七条违约责任及争议处理 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.1任何一方违反本协议约定,均视为违约,违约方应赔偿由此给守约方造成的全部损失,包括但不限于直接损失、诉讼费、律师费、差旅费、公证费、保全费等。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.2因本协议引起的或与本协议有关的任何争议或索赔,双方应首先争取通过友好协商解决该等争议。如果双方未能通过友好协商解决争议,任何一方均有权向甲方住所地有管辖权的人民法院起诉,通过诉讼方式解决。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.3服务期内,乙方联系方式发生变更时应及时通知甲方,否则,由此导致电话信息失联、辅助设备丢失等损失均由乙方承担。本协议由乙方勾选“阅读并同意《服务协议》”之日起生效。 <br />
+      <br />
+        <!-- 方案2:间距固定布局 -->
+        <div class="attachment-container-fixed">
+          <span class="attachment-item" @click="attachmentOne=true">附件一</span>
+          <span class="attachment-item" @click="attachmentTwo=true">附件二</span>
+        </div>
+
+      </div>
+    </div>
+    <van-dialog v-model="attachmentOne" :lazy-render="false">
+      <div style="height: 68vh; overflow-x: hidden; padding:1rem; font-size: 12px">
+        <div style="font-weight: bold; text-align: center; font-size: 15px">附件一</div>
+        <span style="font-weight: bold;">一、服务期限与收费标准</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;我们医疗器械产品提供灵活的服务期限选择,包括半年度和年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以下是不同服务期限的收费标准:<br/>
+
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.半年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币2760元/半年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:根据辅助设备价值,在合同签订时一次性支付人民币__1200__元。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
+
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币5520元/年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同半年度辅助设备押金(人民币1200元)。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
+        <span style="font-weight: bold;">二、费用支付方式</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.服务费支付:根据服务期限的不同,服务费可以按半年度或年度支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.押金支付:在合同签订时一次性支付人民币1200元。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.其他费用支付:如有特殊需求,将根据实际情况协商确定支付方式和时间。<br/>
+        <span style="font-weight: bold;">三、续费条件与流程</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.续费条件:<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1) 如乙方需续费,可在服务期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付服务费;或乙方通过辅助设备(平板)进行续费操作。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2) 在续费的情况下,原合同已支付辅助设备押金直接转为新续费合同的辅助设备押金,无需另行支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3) 续费标准如本标准,甲方保留对续费后的费用进行调整的权利。如遇调整,续费时的具体收费标准将以甲方在续费时公布的最新标准为准。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.续费流程:双方就续费条件达成一致后,签订新的未来蓝豚强脑系统服务协议或续费协议。<br/>
+        <span style="font-weight: bold;">四、违约责任</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.如乙方未按时支付服务费或辅助设备押金,我们有权解除合同并要求乙方承担相应责任。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.如因乙方原因导致设备损坏或丢失,乙方需按辅助设备价值进行赔偿。<br/>
+        <span style="font-weight: bold;">五、其他条框</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.本收费标准自合同签订之日起生效,如有变更,我司将提前通知乙方。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.本收费标准最终解释权归我司所有。
+      </div>
+    </van-dialog>
+
+      <van-dialog v-model="attachmentTwo" :lazy-render="false">
+        <div style="height: 68vh; overflow-x: hidden;padding:1rem; font-size: 12px" >
+          <div style="font-weight: bold; text-align: center; font-size: 15px">附件二</div>
+          <span style="font-weight: bold;">辅助设备包括以下物料及价格:</span><br/>
+          <el-table :data="attachmentTwoList">
+            <el-table-column prop="id" label="序号"/>
+            <el-table-column prop="itemName" label="物料名称"/>
+            <el-table-column prop="Specifications" label="规格型号"/>
+            <el-table-column prop="unit" label="单位"/>
+            <el-table-column prop="unitPrice" label="单价(人民币)"/>
+          </el-table><br/>
+          总金额:人民币  1200   元<br/>
+          以上价格为辅助设备(平板)初始购买成本,用于计算押金及相关费用。
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="attachmentTwo = false">关 闭</el-button>
+        </span>
+      </van-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      attachmentOne: false,
+      attachmentTwo: false,
+      attachmentTwoList:[
+        {
+          id: 1,
+          itemName: "主板",
+          Specifications: "T616 6+128G",
+          unit: "块",
+          unitPrice: 388
+        },
+        {
+          id: 2,
+          itemName: "屏幕",
+          Specifications: "11.97寸(触摸+显示)一体",
+          unit: "块",
+          unitPrice: 363
+        },
+        {
+          id: 3,
+          itemName: "摄像头",
+          Specifications: "5+13MP",
+          unit: "组",
+          unitPrice: 67
+        },
+        {
+          id: 4,
+          itemName: "后壳",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 88
+        },
+        {
+          id: 5,
+          itemName: "电池",
+          Specifications: "8000毫安",
+          unit: "块",
+          unitPrice: 86
+        },
+        {
+          id: 6,
+          itemName: "喇叭",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 36
+        },
+        {
+          id: 7,
+          itemName: "麦克风",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 26
+        },
+        {
+          id: 8,
+          itemName: "卡槽",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 24
+        },
+        {
+          id: 9,
+          itemName: "充电器",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 40
+        },
+        {
+          id: 10,
+          itemName: "平板包",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 42
+        },
+        {
+          id: 11,
+          itemName: "平板保护壳",
+          Specifications: "-",
+          unit: "个",
+          unitPrice: 40
+        }
+      ]
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+div{
+  line-height: 26px;
+  color: #333;
+}
+
+.row {
+  display: flex;
+  gap: 20px; /* 列间距 */
+}
+
+.col {
+  flex: 1; /* 三列等宽 */
+  min-width: 0; /* 防止内容溢出 */
+}
+
+.content-block {
+  background: #f8f9fa;
+  padding: 5px;
+  border-radius: 6px;
+}
+
+h3 {
+  margin-top: 0;
+  color: #2c3e50;
+  border-bottom: 1px solid #dee2e6;
+  padding-bottom: 8px;
+}
+
+.info-item {
+  margin: 8px 0;
+  color: #6c757d;
+  font-size: 0.9em;
+  line-height: 1.6;
+}
+
+/* 公共样式 */
+.attachment-item {
+  display: inline-block;
+  padding: 4px 8px;
+  background: #f8f9fa;
+  border-radius: 4px;
+  font-weight: 500;
+  color: #495057;
+  margin: 4px 0;
+}
+
+/* 方案2:固定间距布局 */
+.attachment-container-fixed {
+  display: flex;
+  gap: 24px; /* 固定间距 */
+  align-items: center;
+  margin-left: 30px;
+}
+
+/* 添加悬停效果 */
+.attachment-item:hover {
+  background: #e9ecef;
+  cursor: pointer;
+  transition: all 0.3s ease;
+}
+
+/* 添加下划线动画 */
+.attachment-item {
+  position: relative;
+  text-decoration: none;
+}
+.attachment-item::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 0%;
+  height: 2px;
+  background: #0d6efd;
+  transition: width 0.3s ease;
+}
+.attachment-item:hover::after {
+  width: 100%;
+}
+</style>

+ 4 - 4
src/views/patient/add/index.vue

@@ -80,7 +80,7 @@
           </div>
         </div>
         <div style="margin-top: 20px;">
-          <div class="titles">诊结果 </div>
+          <div class="titles">诊结果 </div>
           <div class="item">
             <div :class="form.diagnoseResultType.includes(item.value) ? 'item_box boxActive' : 'item_box'"
               v-for="item in dict.type.diagnose_result_type" @click="changeBox(item, 'diagnoseResultType')">
@@ -180,12 +180,12 @@
         </el-row>
         <el-row :gutter="24" v-if="isequipmentPledge">
           <el-col :span="3" style="display: flex;">
-            <div class="titles">设备租赁协议</div>
+            <div class="titles">服务协议</div>
           </el-col>
           <el-col :span="10" style="margin-left:-80px ;">
             <el-form-item label="">
               <el-checkbox style="margin-right:20px;" v-model="xychecked">我已阅读此协议 <el-link type="primary"
-                  style="vertical-align: top;" @click.stop="handelXy">租赁协议</el-link></el-checkbox>
+                  style="vertical-align: top;" @click.stop="handelXy">服务协议</el-link></el-checkbox>
 
             </el-form-item>
           </el-col>
@@ -300,7 +300,7 @@
       </div>
     </el-form>
     <!-- 租赁协议 -->
-    <el-dialog title="租赁协议" :visible.sync="xyOpen" width="40%">
+    <el-dialog title="服务协议" :visible.sync="xyOpen" width="40%">
       <div style="height: 68vh; overflow-x: hidden;">
         <xy />
       </div>

+ 66 - 78
src/views/patient/add/xy.vue

@@ -7,130 +7,118 @@
       <div class="col">
         <div class="content-block">
           <p class="info-item">出租方(甲方):北京耀荣康健医疗科技发展有限公司</p>
-          <p class="info-item">联系人:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">联系电话:400-086-1638 </p>
         </div>
       </div>
 
       <!-- 承租方 -->
       <div class="col">
         <div class="content-block">
-          <p class="info-item">承租方(乙方或经办人):________</p>
-          <p class="info-item">身份证号:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">承租方(乙方或委托人):用户个人或合作医院</p>
         </div>
       </div>
 
       <!-- 紧急联系人 -->
       <div class="col">
         <div class="content-block">
-          <p class="info-item">紧急联系人________</p>
-          <p class="info-item">与乙方关系:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">联系电话:400-086-1638 </p>
         </div>
       </div>
     </div> <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​根据《中华人民共和国民法典》及有关规定,为明确甲乙双方权利义务关系,甲乙双方在平等自愿的前提下,经协商-致签订本协议。如乙方在18周岁以下,请在监护人陪同且同意的情况下签署本协议。具体条款如下:
-    <br />  <span style="font-weight: bold;">第一条租赁标的及期限</span>  <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​1.1甲方将未来蓝豚强脑训练设备提供给乙方使用,从____年____月____日起到____年___月___ 日止交付给乙方使,租期为____天。 <br />
+    <div style="padding:1rem; font-size: 12px">
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;<span style="font-weight: bold;">根据《中华人民共和国民法典》及有关规定,为明确甲乙双方权利义务关系,甲乙双方在平等自愿的前提下,经协商一致签订本协议。如乙方在18周岁以下,请在监护人陪同且同意的情况下签署本协议。具体条款如下:</span>
+      <br />  <span style="font-weight: bold;">第一条服务内容及期限</span>  <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.1 甲方通过未来蓝豚强脑系统及辅助设备向乙方提供认知功能障碍训练服务,从_____年_____月_____日起到_____年_____月_____日止,服务期为_____天。 <br />
 
-    租金:_____元(大写_______元整) ;押金:______元(大写_______元整)。 <br />
-    <span style="font-weight: bold;">第二条支付方式及发票 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.1甲方提供微信支付方式,乙方应于本合同签订之日一次性支付全额租金和押金。 <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.2租赁期限届满,乙方应及时将设备归还甲方,甲方收到设备后经检测确认无损坏后的3个工作日内无息退还押金,如遇节假日则顺延。 <br />
-    <span style="font-weight: bold;"> 第三条租赁期限及续租</span> <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.1租赁期内,乙方提前终止协议需与甲方达成一致,若未经允许擅自终止协议、归还设备,乙方需要按原租期计算租金,不退已交租金,如发生经甲方认可的不可抗力因素导致乙方不能继续租赁,本协议租期自乙方、乙方委托人、紧急联系人或合法继承人归还设备之日终止。
+      服务费:_____元(大写_______元整);辅助设备押金:______元(大写_______元整)。 <br />
+      <span style="font-weight: bold;">第二条支付方式及发票 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.1甲方提供支付宝、微信、银行卡、信用卡等支付方式,乙方应于本合同签订之日一次性支付全额服务费和押金。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.2服务期限届满,乙方应及时将辅助设备归还甲方,甲方收到辅助设备后经检测确认无损坏后的3个工作日内无息退还押金,如遇节假日则顺延。 <br />
+      <span style="font-weight: bold;"> 第三条服务期限及续费</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.1服务期内,乙方提前终止协议需与甲方达成一致,若未经允许擅自终止协议、归还辅助设备,乙方需要按原服务期计算服务费,不退已交服务费,如发生经甲方认可的不可抗力因素导致乙方不能继续使用,本协议服务期限自乙方、乙方委托人归还辅助设备之日终止。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.2租赁期满后,乙方应将设备归还甲方。甲方在收到设备后将进行检测,确认设备状态符合归还标准。在乙方结清所有相关费用(包括但不限于租金、押金、违约金及其他可能产生的费用)后,本协议终止。 <br />
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.2服务期满后,乙方应将辅助设备归还甲方。甲方在收到辅助设备后将进行检测,确认辅助设备状态符合归还标准。在乙方结清所有相关费用(包括但不限于服务费、押金、违约金及其他可能产生的费用)后,本协议终止。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.3如乙方需续租,可在租赁期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付租金;或乙方通过租赁设备进行续费操作。在续租的情况下,原合同已支付设备押金直接转为新租赁合同的设备押金,无需另行支付。续租收费标准见附件1。甲方保留对续租收费进行调整的权利。如遇调整,续租时的具体收费标准将以甲方在续租时公布的最新标准为准。
-    <br /><span style="font-weight: bold;">第四条甲乙双方权利与义务 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.1甲方在租赁期间拥有租赁设备的所有权,乙方在租赁期间拥有租赁设备的合法使用权。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.3如乙方需续费,可在服务期满前10个工作日续签服务协议,支付服务费;或乙方通过辅助设备进行续费操作。在续费的情况下,原合同已支付辅助设备押金直接转为新服务协议的辅助设备押金,无需另行支付。续费收费标准见附件1。甲方保留对续费收费进行调整的权利。如遇调整,续费时的具体收费标准将以甲方在续费时公布的最新标准为准。
+      <br /><span style="font-weight: bold;">第四条甲乙双方权利与义务 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.1甲方在提供系统服务期间拥有辅助设备的所有权,乙方在系统服务期间拥有辅助设备的合法使用权。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.2乙方全额支付租金和押金后,甲方应当向乙方提供运行正常的设备、自然故障的维修及更换,保证设备配置与清单一致。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.2乙方全额支付服务费和押金后,甲方应当向乙方提供运行正常的辅助设备、自然故障的维修及更换,保证设备配置与清单一致。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.3租赁期间因设备正常折旧而导致设备无法正常使用或使用故障、设备自然产生的硬件故障由甲方免费更换,因软件问题导致的使用问题由甲方协助解决。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.4乙方因不当使用造成租赁设备损坏导致维修的,甲方有权按照赔偿标准价目表(见附件2)从押金中划扣相应费用,乙方应于划扣后3个自然日内补足押金,3日后乙方未补足押金的,每逾期1日,甲方在结算租金时有权加收乙方未补足押金部分的1%。设备维修期间仍视为租赁期的一部分,乙方需按照合同约定的租赁费用标准继续支付费用。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.5因乙方原因导致租赁设备失去维修价值或无法维修的,甲方有权直接扣除乙方全部押金作为抵扣。全部押金不足以抵扣租赁设备的,乙方应在甲方提出补偿请求后3个工作日内足额补偿。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.6乙方在租赁期限届满后未归还设备,甲方有权继续按协议约定标准收取相应租金,并有权扣除押金,要求乙方归还相应设备,支付逾期使用设备的租金
-    <br /> <span style="font-weight: bold;"> 第五条安全权利与义务</span> 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.1在乙方使用甲方产品与服务的过程中,甲方将采取技术措施和其他必要措施(数据安全技术措施等)尽力保证网络安全、稳定运行,并防范网络违法犯罪活动。同时,乙方应遵守相关法律法规,不应从事违反法律法规或影响网站安全的行为,包括但不限于:违反网络安全规定和危害计算机信息网络安全的活动:如破坏或企图破坏安全保护措施,对服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取信息数据、非法入侵系统,包括接触未经许可的数据或进入未经许可的服务器账户等;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动。
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.3提供系统服务期间因辅助设备正常折旧而导致辅助设备无法正常使用或使用故障、辅助设备自然产生的硬件故障由甲方免费更换,因软件问题导致的使用问题由甲方协助解决。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.4乙方因不当使用造成辅助设备损坏导致维修的,甲方有权按照赔偿标准价目表(见附件2)从押金中划扣相应费用,乙方应于划扣后3个自然日内补足押金,3日后乙方未补足押金的,每逾期1日,甲方在结算辅助设备押金时有权加收乙方未补足押金部分的1%。辅助设备维修期间仍视为服务期的一部分,乙方需按照合同约定的服务费用标准继续支付费用。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.5因乙方原因导致辅助设备失去维修价值或无法维修的,甲方有权直接扣除乙方辅助设备全部押金作为补偿。辅助设备全部押金不足以抵扣辅助设备的,乙方应在甲方提出补偿请求后3个工作日内足额补偿。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.6乙方在服务期限届满后未归还辅助设备,甲方有权继续按协议约定标准收取相应服务费,并有权扣除辅助设备押金,要求乙方归还相应辅助设备,支付逾期使用服务费
+      <br /> <span style="font-weight: bold;"> 第五条安全权利与义务</span> 
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.1在乙方使用甲方产品与服务的过程中,甲方将采取技术措施和其他必要措施(数据安全技术措施等)尽力保证网络安全、稳定运行,并防范网络违法犯罪活动。同时,乙方应遵守相关法律法规,不应从事违反法律法规或影响网站安全的行为,包括但不限于:违反网络安全规定和危害计算机信息网络安全的活动:如破坏或企图破坏安全保护措施,对服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取信息数据、非法入侵系统,包括接触未经许可的数据或进入未经许可的服务器账户等;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.2依据《网络安全法》、《数据安全法》、《个人信息保护法》等法律法规,甲方依法保障您对个人信息的权益,包含用户知情权、 用户访问权、用户纠正权、用户被遗忘权、用户可携带权、用户拒绝权、用户限制处理权等。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.2依据《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》等法律法规,甲方依法保障您对个人信息的权益,包含用户知情权、用户访问权、用户纠正权、用户被遗忘权、用户可携带权、用户拒绝权、用户限制处理权等。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.3未经乙方事先书面同意,甲方不得与甲方以外的任何公司、个织、个人共享、协作、委托处理、转让、公开披露乙方的个人信息。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.4为了向乙方提供更完善、优质的产品和服务,某些服务将由合作方提供,基于乙方的单独同意,甲方仅会出于合法、正当、必要、特 定明确的目的,对乙方的个人信息进行共享或协作,井且只会共享、协作为提供服务所必要的个人信息。
-    甲方不会共享可以识别身份的个人信息,除非法律法规另有规定。 <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.5因法律法规、行业要求或其他涉及重大、实质性变更,导致本协议的更新或删减,甲方将依据具体情况以合适的方式通知乙方。 <br />
-    <span style="font-weight: bold;">第六条隐私政策</span> <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.1本协议所指的“隐私“包括《电信和互联网用户个人信息保护规定》第4条规定的用户个人信息内容以及未来不时制定或修订的法律法规中明确规定的隐私应包括的内容。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.2当乙方接受并使用租赁服务时,甲方即认为乙方已仔细阅读并理解、接受本协议,在服务开始后,乙方应提供不小于甲方服务开展所必要的个人信息,在此过程中,甲方承诺不会泄露乙方个人信息,并将履行安全义务,采用有效的安全技术措施保护个人信息和数据。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.3当服务结束时,为保障乙方隐私及信息安全,乙方需自行清理或处理保存在租赁设备中的相关数据、信息。服务期结束后,甲方将抹除设备上所有信息和数据,甲方不对设备中的相关信息进行保存,因乙方原因导致的信息丢失等风险由乙方自行承担。
-    <br /><span style="font-weight: bold;">第七条违约责任及争议处理 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​7.1任何- -方违反本协议约定,均视为违约,违约方应赔偿由此给守约方造成的全部损失,包括但不限于直接损失、诉讼费、律师费、差旅费、公证费、保全费等。
-    <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​7.2因本协议引起的或与本协议有关的任何争议或素赔,双方应首先争取通过友好协商解决该等争议。如果双方未能通过友好协商解决争议,任何-方均有权向甲方住所地有管辖权的人民法院起诉,通过诉讼方式解决。
-    <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​乙方需提供本人或监护人的身份证复印件和准确的联系方式(包括但不限于手机号码),租赁期内,乙方联系方式发生变更时应及时通知 甲方,否则,由此导致电话信息失联、租赁设备丢失等损失均由乙方承担。本协议式二份,协议双方各执份,
-    自甲方盖章且乙方签字之日起生效。 <br /><br />
-
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​承租人(乙方或经办人)确认签字:
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.3未经乙方事先书面同意,甲方不得与甲方以外的任何公司、组织、个人共享、协作、委托处理、转让、公开披露乙方的个人信息。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.4为了向乙方提供更完善、优质的产品和服务,某些服务将由合作方提供,基于乙方的单独同意,甲方仅会出于合法、正当、必要、特定明确的目的,对乙方的个人信息进行共享或协作,并且只会共享、协作为提供服务所必要的个人信息。甲方不会共享可以识别身份的个人信息,除非法律法规另有规定。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.5因法律法规、行业要求或其他涉及重大、实质性变更,导致本协议的更新或删减,甲方将依据具体情况以合适的方式通知乙方。 <br />
+      <span style="font-weight: bold;">第六条隐私政策</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.1本协议所指的“隐私”包括《电信和互联网用户个人信息保护规定》第四条规定的用户个人信息内容以及未来不时制定或修订的法律法规中明确规定的隐私应包括的内容。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.2当乙方接受并使用系统服务和辅助设备时,甲方即认为乙方已仔细阅读并理解、接受本协议,在服务开始后,乙方应提供不小于甲方服务开展所必要的个人信息,在此过程中,甲方承诺不会泄露乙方个人信息,并将履行安全义务,采用有效的安全技术措施保护个人信息和数据。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;6.3当服务结束时,为保障乙方隐私及信息安全,乙方需自行清理或处理保存在辅助设备中的相关数据、信息。服务期结束后,甲方将抹除辅助设备上乙方所有信息和数据,甲方不对辅助设备中的相关信息进行保存,因乙方原因导致的信息丢失等风险由乙方自行承担。
+      <br /><span style="font-weight: bold;">第七条违约责任及争议处理 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.1任何一方违反本协议约定,均视为违约,违约方应赔偿由此给守约方造成的全部损失,包括但不限于直接损失、诉讼费、律师费、差旅费、公证费、保全费等。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.2因本协议引起的或与本协议有关的任何争议或索赔,双方应首先争取通过友好协商解决该等争议。如果双方未能通过友好协商解决争议,任何一方均有权向甲方住所地有管辖权的人民法院起诉,通过诉讼方式解决。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.3服务期内,乙方联系方式发生变更时应及时通知甲方,否则,由此导致电话信息失联、辅助设备丢失等损失均由乙方承担。本协议由乙方勾选“阅读并同意《服务协议》”之日起生效。 <br />
+      <br />
+        
     <br /><br />
       <!-- 方案2:间距固定布局 -->
       <div class="attachment-container-fixed">
         <span class="attachment-item" @click="attachmentOne=true">附件一</span>
         <span class="attachment-item" @click="attachmentTwo=true">附件二</span>
       </div>
+    </div>
 
       <el-dialog title="附件一" :visible.sync="attachmentOne" width="40%" append-to-body>
-        <div style="height: 68vh; overflow-x: hidden;">
-        <span style="font-weight: bold;">一、租赁期限与收费标准</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;我们为医疗器械产品提供灵活的租赁期限选择,包括月度、季度、半年度和年度租赁。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以下是不同租赁期限的收费标准:<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.月度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币460元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:根据设备价值,在合同签订时一次性支付人民币1200元。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
-
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.季度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币1380元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
+        <div style="height: 68vh; overflow-x: hidden; padding:1rem; font-size: 12px">
+        <div style="font-weight: bold; text-align: center; font-size: 15px">附件一</div>
+        <span style="font-weight: bold;">一、服务期限与收费标准</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;我们医疗器械产品提供灵活的服务期限选择,包括半年度和年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以下是不同服务期限的收费标准:<br/>
 
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.半年度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币2760元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.半年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币2760元/半年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:根据辅助设备价值,在合同签订时一次性支付人民币__1200__元。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
 
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.年度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币5520元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币5520元/年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同半年度辅助设备押金(人民币1200元)。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
         <span style="font-weight: bold;">二、费用支付方式</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.租金支付:根据租赁期限的不同,租金可以按月度、季度、半年度或年度支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.服务费支付:根据服务期限的不同,服务费可以按半年度或年度支付。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.押金支付:在合同签订时一次性支付人民币1200元。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.其他费用支付:如有特殊需求,将根据实际情况协商确定支付方式和时间。<br/>
-        <span style="font-weight: bold;">三、续租条件与流程</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.续租条件:<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1) 如乙方需续租,可在租赁期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;租金;或乙方通过租赁设备进行续费操作。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2) 在续租的情况下,原合同已支付设备押金直接转为新租赁合同的设备押金,无需另行支付。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3) 续租收费标准如本标准,甲方保留对续租收费进行调整的权利。如遇调整,续租时的具体收费标准将&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以甲方在续租时公布的最新标准为准。<br/>
+        <span style="font-weight: bold;">三、续费条件与流程</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.续费条件:<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1) 如乙方需续费,可在服务期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;服务费;或乙方通过辅助设备(平板)进行续费操作。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2) 在续费的情况下,原合同已支付辅助设备押金直接转为新续费合同的辅助设备押金,无需另行支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3) 续费标准如本标准,甲方保留对续费后的费用进行调整的权利。如遇调整,续费时的具体收费标准将&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以甲方在续费时公布的最新标准为准。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.续费流程:双方就续费条件达成一致后,签订新的未来蓝豚强脑系统服务协议或续费协议。<br/>
         <span style="font-weight: bold;">四、违约责任</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.如客户未按时支付租金或押金,我们有权解除合同并要求客户承担相应责任。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.如因客户原因导致设备损坏或丢失,客户需按设备价值进行赔偿。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.如乙方未按时支付服务费或辅助设备押金,我们有权解除合同并要求乙方承担相应责任。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.如因乙方原因导致设备损坏或丢失,乙方需按辅助设备价值进行赔偿。<br/>
         <span style="font-weight: bold;">五、其他条框</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.本收费标准自合同签订之日起生效,如有变更,我司将提前通知客户。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.本收费标准自合同签订之日起生效,如有变更,我司将提前通知乙方。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.本收费标准最终解释权归我司所有。
-        </div>
+      </div>
         <span slot="footer" class="dialog-footer">
           <el-button type="primary" @click="attachmentOne = false">关 闭</el-button>
         </span>
       </el-dialog>
 
       <el-dialog title="附件二" :visible.sync="attachmentTwo" width="40%" append-to-body>
-        <div>
-          <span style="font-weight: bold;">租赁设备包括以下物料及价格:</span><br/>
+        <div style="height: 68vh; overflow-x: hidden;padding:1rem; font-size: 12px" >
+          <span style="font-weight: bold;">辅助设备包括以下物料及价格:</span><br/>
           <el-table :data="attachmentTwoList">
             <el-table-column prop="id" label="序号"/>
             <el-table-column prop="itemName" label="物料名称"/>
@@ -139,7 +127,7 @@
             <el-table-column prop="unitPrice" label="单价(人民币)"/>
           </el-table><br/>
           总金额:人民币  1200   元<br/>
-          以上价格为租赁设备的初始购买成本,用于计算押金及相关费用。
+          以上价格为辅助设备(平板)初始购买成本,用于计算押金及相关费用。
         </div>
         <span slot="footer" class="dialog-footer">
           <el-button type="primary" @click="attachmentTwo = false">关 闭</el-button>

+ 3 - 3
src/views/patient/addTwo/index.vue

@@ -74,12 +74,12 @@
           </el-row>
           <el-row :gutter="24" v-if="isequipmentPledge">
             <el-col :span="3" style="display: flex;">
-              <div class="titles">设备租赁协议</div>
+              <div class="titles">服务协议</div>
             </el-col>
             <el-col :span="10" style="margin-left:-80px ;">
               <el-form-item label="">
                 <el-checkbox style="margin-right:20px;" v-model="xychecked">我已阅读此协议 <el-link type="primary"
-                    style="vertical-align: top;" @click.stop="handelXy">租赁协议</el-link></el-checkbox>
+                    style="vertical-align: top;" @click.stop="handelXy">服务协议</el-link></el-checkbox>
 
               </el-form-item>
             </el-col>
@@ -182,7 +182,7 @@
         <el-button type="primary" @click="handleOk">完成支付</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="租赁协议" :visible.sync="xyOpen" width="60%">
+    <el-dialog title="服务协议" :visible.sync="xyOpen" width="60%">
       <div style="height: 68vh; overflow-x: hidden;">
         <xy />
       </div>

+ 66 - 78
src/views/patient/addTwo/xy.vue

@@ -7,130 +7,118 @@
       <div class="col">
         <div class="content-block">
           <p class="info-item">出租方(甲方):北京耀荣康健医疗科技发展有限公司</p>
-          <p class="info-item">联系人:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">联系电话:400-086-1638 </p>
         </div>
       </div>
 
       <!-- 承租方 -->
       <div class="col">
         <div class="content-block">
-          <p class="info-item">承租方(乙方或经办人):________</p>
-          <p class="info-item">身份证号:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">承租方(乙方或委托人):用户个人或合作医院</p>
         </div>
       </div>
 
       <!-- 紧急联系人 -->
       <div class="col">
         <div class="content-block">
-          <p class="info-item">紧急联系人________</p>
-          <p class="info-item">与乙方关系:________</p>
-          <p class="info-item">联系电话:________</p>
+          <p class="info-item">联系电话:400-086-1638 </p>
         </div>
       </div>
     </div> <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​根据《中华人民共和国民法典》及有关规定,为明确甲乙双方权利义务关系,甲乙双方在平等自愿的前提下,经协商-致签订本协议。如乙方在18周岁以下,请在监护人陪同且同意的情况下签署本协议。具体条款如下:
-    <br />  <span style="font-weight: bold;">第一条租赁标的及期限</span>  <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​1.1甲方将未来蓝豚强脑训练设备提供给乙方使用,从____年____月____日起到____年___月___ 日止交付给乙方使,租期为____天。 <br />
+    <div style="padding:1rem; font-size: 12px">
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;<span style="font-weight: bold;">根据《中华人民共和国民法典》及有关规定,为明确甲乙双方权利义务关系,甲乙双方在平等自愿的前提下,经协商一致签订本协议。如乙方在18周岁以下,请在监护人陪同且同意的情况下签署本协议。具体条款如下:</span>
+      <br />  <span style="font-weight: bold;">第一条服务内容及期限</span>  <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.1 甲方通过未来蓝豚强脑系统及辅助设备向乙方提供认知功能障碍训练服务,从_____年_____月_____日起到_____年_____月_____日止,服务期为_____天。 <br />
 
-    租金:_____元(大写_______元整) ;押金:______元(大写_______元整)。 <br />
-    <span style="font-weight: bold;">第二条支付方式及发票 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.1甲方提供微信支付方式,乙方应于本合同签订之日一次性支付全额租金和押金。 <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.2租赁期限届满,乙方应及时将设备归还甲方,甲方收到设备后经检测确认无损坏后的3个工作日内无息退还押金,如遇节假日则顺延。 <br />
-    <span style="font-weight: bold;"> 第三条租赁期限及续租</span> <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.1租赁期内,乙方提前终止协议需与甲方达成一致,若未经允许擅自终止协议、归还设备,乙方需要按原租期计算租金,不退已交租金,如发生经甲方认可的不可抗力因素导致乙方不能继续租赁,本协议租期自乙方、乙方委托人、紧急联系人或合法继承人归还设备之日终止。
+      服务费:_____元(大写_______元整);辅助设备押金:______元(大写_______元整)。 <br />
+      <span style="font-weight: bold;">第二条支付方式及发票 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​2.1甲方提供支付宝、微信、银行卡、信用卡等支付方式,乙方应于本合同签订之日一次性支付全额服务费和押金。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.2服务期限届满,乙方应及时将辅助设备归还甲方,甲方收到辅助设备后经检测确认无损坏后的3个工作日内无息退还押金,如遇节假日则顺延。 <br />
+      <span style="font-weight: bold;"> 第三条服务期限及续费</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.1服务期内,乙方提前终止协议需与甲方达成一致,若未经允许擅自终止协议、归还辅助设备,乙方需要按原服务期计算服务费,不退已交服务费,如发生经甲方认可的不可抗力因素导致乙方不能继续使用,本协议服务期限自乙方、乙方委托人归还辅助设备之日终止。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.2租赁期满后,乙方应将设备归还甲方。甲方在收到设备后将进行检测,确认设备状态符合归还标准。在乙方结清所有相关费用(包括但不限于租金、押金、违约金及其他可能产生的费用)后,本协议终止。 <br />
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.2服务期满后,乙方应将辅助设备归还甲方。甲方在收到辅助设备后将进行检测,确认辅助设备状态符合归还标准。在乙方结清所有相关费用(包括但不限于服务费、押金、违约金及其他可能产生的费用)后,本协议终止。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.3如乙方需续租,可在租赁期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付租金;或乙方通过租赁设备进行续费操作。在续租的情况下,原合同已支付设备押金直接转为新租赁合同的设备押金,无需另行支付。续租收费标准见附件1。甲方保留对续租收费进行调整的权利。如遇调整,续租时的具体收费标准将以甲方在续租时公布的最新标准为准。
-    <br /><span style="font-weight: bold;">第四条甲乙双方权利与义务 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.1甲方在租赁期间拥有租赁设备的所有权,乙方在租赁期间拥有租赁设备的合法使用权。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​3.3如乙方需续费,可在服务期满前10个工作日续签服务协议,支付服务费;或乙方通过辅助设备进行续费操作。在续费的情况下,原合同已支付辅助设备押金直接转为新服务协议的辅助设备押金,无需另行支付。续费收费标准见附件1。甲方保留对续费收费进行调整的权利。如遇调整,续费时的具体收费标准将以甲方在续费时公布的最新标准为准。
+      <br /><span style="font-weight: bold;">第四条甲乙双方权利与义务 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.1甲方在提供系统服务期间拥有辅助设备的所有权,乙方在系统服务期间拥有辅助设备的合法使用权。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.2乙方全额支付租金和押金后,甲方应当向乙方提供运行正常的设备、自然故障的维修及更换,保证设备配置与清单一致。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.2乙方全额支付服务费和押金后,甲方应当向乙方提供运行正常的辅助设备、自然故障的维修及更换,保证设备配置与清单一致。 <br />
 
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.3租赁期间因设备正常折旧而导致设备无法正常使用或使用故障、设备自然产生的硬件故障由甲方免费更换,因软件问题导致的使用问题由甲方协助解决。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.4乙方因不当使用造成租赁设备损坏导致维修的,甲方有权按照赔偿标准价目表(见附件2)从押金中划扣相应费用,乙方应于划扣后3个自然日内补足押金,3日后乙方未补足押金的,每逾期1日,甲方在结算租金时有权加收乙方未补足押金部分的1%。设备维修期间仍视为租赁期的一部分,乙方需按照合同约定的租赁费用标准继续支付费用。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.5因乙方原因导致租赁设备失去维修价值或无法维修的,甲方有权直接扣除乙方全部押金作为抵扣。全部押金不足以抵扣租赁设备的,乙方应在甲方提出补偿请求后3个工作日内足额补偿。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.6乙方在租赁期限届满后未归还设备,甲方有权继续按协议约定标准收取相应租金,并有权扣除押金,要求乙方归还相应设备,支付逾期使用设备的租金
-    <br /> <span style="font-weight: bold;"> 第五条安全权利与义务</span> 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.1在乙方使用甲方产品与服务的过程中,甲方将采取技术措施和其他必要措施(数据安全技术措施等)尽力保证网络安全、稳定运行,并防范网络违法犯罪活动。同时,乙方应遵守相关法律法规,不应从事违反法律法规或影响网站安全的行为,包括但不限于:违反网络安全规定和危害计算机信息网络安全的活动:如破坏或企图破坏安全保护措施,对服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取信息数据、非法入侵系统,包括接触未经许可的数据或进入未经许可的服务器账户等;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动。
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.3提供系统服务期间因辅助设备正常折旧而导致辅助设备无法正常使用或使用故障、辅助设备自然产生的硬件故障由甲方免费更换,因软件问题导致的使用问题由甲方协助解决。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.4乙方因不当使用造成辅助设备损坏导致维修的,甲方有权按照赔偿标准价目表(见附件2)从押金中划扣相应费用,乙方应于划扣后3个自然日内补足押金,3日后乙方未补足押金的,每逾期1日,甲方在结算辅助设备押金时有权加收乙方未补足押金部分的1%。辅助设备维修期间仍视为服务期的一部分,乙方需按照合同约定的服务费用标准继续支付费用。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.5因乙方原因导致辅助设备失去维修价值或无法维修的,甲方有权直接扣除乙方辅助设备全部押金作为补偿。辅助设备全部押金不足以抵扣辅助设备的,乙方应在甲方提出补偿请求后3个工作日内足额补偿。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​4.6乙方在服务期限届满后未归还辅助设备,甲方有权继续按协议约定标准收取相应服务费,并有权扣除辅助设备押金,要求乙方归还相应辅助设备,支付逾期使用服务费
+      <br /> <span style="font-weight: bold;"> 第五条安全权利与义务</span> 
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.1在乙方使用甲方产品与服务的过程中,甲方将采取技术措施和其他必要措施(数据安全技术措施等)尽力保证网络安全、稳定运行,并防范网络违法犯罪活动。同时,乙方应遵守相关法律法规,不应从事违反法律法规或影响网站安全的行为,包括但不限于:违反网络安全规定和危害计算机信息网络安全的活动:如破坏或企图破坏安全保护措施,对服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取信息数据、非法入侵系统,包括接触未经许可的数据或进入未经许可的服务器账户等;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.2依据《网络安全法》、《数据安全法》、《个人信息保护法》等法律法规,甲方依法保障您对个人信息的权益,包含用户知情权、 用户访问权、用户纠正权、用户被遗忘权、用户可携带权、用户拒绝权、用户限制处理权等。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.2依据《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》等法律法规,甲方依法保障您对个人信息的权益,包含用户知情权、用户访问权、用户纠正权、用户被遗忘权、用户可携带权、用户拒绝权、用户限制处理权等。
 
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.3未经乙方事先书面同意,甲方不得与甲方以外的任何公司、个织、个人共享、协作、委托处理、转让、公开披露乙方的个人信息。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.4为了向乙方提供更完善、优质的产品和服务,某些服务将由合作方提供,基于乙方的单独同意,甲方仅会出于合法、正当、必要、特 定明确的目的,对乙方的个人信息进行共享或协作,井且只会共享、协作为提供服务所必要的个人信息。
-    甲方不会共享可以识别身份的个人信息,除非法律法规另有规定。 <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.5因法律法规、行业要求或其他涉及重大、实质性变更,导致本协议的更新或删减,甲方将依据具体情况以合适的方式通知乙方。 <br />
-    <span style="font-weight: bold;">第六条隐私政策</span> <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.1本协议所指的“隐私“包括《电信和互联网用户个人信息保护规定》第4条规定的用户个人信息内容以及未来不时制定或修订的法律法规中明确规定的隐私应包括的内容。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.2当乙方接受并使用租赁服务时,甲方即认为乙方已仔细阅读并理解、接受本协议,在服务开始后,乙方应提供不小于甲方服务开展所必要的个人信息,在此过程中,甲方承诺不会泄露乙方个人信息,并将履行安全义务,采用有效的安全技术措施保护个人信息和数据。
-    <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.3当服务结束时,为保障乙方隐私及信息安全,乙方需自行清理或处理保存在租赁设备中的相关数据、信息。服务期结束后,甲方将抹除设备上所有信息和数据,甲方不对设备中的相关信息进行保存,因乙方原因导致的信息丢失等风险由乙方自行承担。
-    <br /><span style="font-weight: bold;">第七条违约责任及争议处理 </span><br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​7.1任何- -方违反本协议约定,均视为违约,违约方应赔偿由此给守约方造成的全部损失,包括但不限于直接损失、诉讼费、律师费、差旅费、公证费、保全费等。
-    <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​7.2因本协议引起的或与本协议有关的任何争议或素赔,双方应首先争取通过友好协商解决该等争议。如果双方未能通过友好协商解决争议,任何-方均有权向甲方住所地有管辖权的人民法院起诉,通过诉讼方式解决。
-    <br />
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​乙方需提供本人或监护人的身份证复印件和准确的联系方式(包括但不限于手机号码),租赁期内,乙方联系方式发生变更时应及时通知 甲方,否则,由此导致电话信息失联、租赁设备丢失等损失均由乙方承担。本协议式二份,协议双方各执份,
-    自甲方盖章且乙方签字之日起生效。 <br /><br />
-
-    &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​承租人(乙方或经办人)确认签字:
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.3未经乙方事先书面同意,甲方不得与甲方以外的任何公司、组织、个人共享、协作、委托处理、转让、公开披露乙方的个人信息。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;5.4为了向乙方提供更完善、优质的产品和服务,某些服务将由合作方提供,基于乙方的单独同意,甲方仅会出于合法、正当、必要、特定明确的目的,对乙方的个人信息进行共享或协作,并且只会共享、协作为提供服务所必要的个人信息。甲方不会共享可以识别身份的个人信息,除非法律法规另有规定。 <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​5.5因法律法规、行业要求或其他涉及重大、实质性变更,导致本协议的更新或删减,甲方将依据具体情况以合适的方式通知乙方。 <br />
+      <span style="font-weight: bold;">第六条隐私政策</span> <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.1本协议所指的“隐私”包括《电信和互联网用户个人信息保护规定》第四条规定的用户个人信息内容以及未来不时制定或修订的法律法规中明确规定的隐私应包括的内容。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​6.2当乙方接受并使用系统服务和辅助设备时,甲方即认为乙方已仔细阅读并理解、接受本协议,在服务开始后,乙方应提供不小于甲方服务开展所必要的个人信息,在此过程中,甲方承诺不会泄露乙方个人信息,并将履行安全义务,采用有效的安全技术措施保护个人信息和数据。
+      <br />&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;6.3当服务结束时,为保障乙方隐私及信息安全,乙方需自行清理或处理保存在辅助设备中的相关数据、信息。服务期结束后,甲方将抹除辅助设备上乙方所有信息和数据,甲方不对辅助设备中的相关信息进行保存,因乙方原因导致的信息丢失等风险由乙方自行承担。
+      <br /><span style="font-weight: bold;">第七条违约责任及争议处理 </span><br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.1任何一方违反本协议约定,均视为违约,违约方应赔偿由此给守约方造成的全部损失,包括但不限于直接损失、诉讼费、律师费、差旅费、公证费、保全费等。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.2因本协议引起的或与本协议有关的任何争议或索赔,双方应首先争取通过友好协商解决该等争议。如果双方未能通过友好协商解决争议,任何一方均有权向甲方住所地有管辖权的人民法院起诉,通过诉讼方式解决。
+      <br />
+      &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;7.3服务期内,乙方联系方式发生变更时应及时通知甲方,否则,由此导致电话信息失联、辅助设备丢失等损失均由乙方承担。本协议由乙方勾选“阅读并同意《服务协议》”之日起生效。 <br />
+      <br />
+        
     <br /><br />
       <!-- 方案2:间距固定布局 -->
       <div class="attachment-container-fixed">
         <span class="attachment-item" @click="attachmentOne=true">附件一</span>
         <span class="attachment-item" @click="attachmentTwo=true">附件二</span>
       </div>
+    </div>
 
       <el-dialog title="附件一" :visible.sync="attachmentOne" width="40%" append-to-body>
-        <div style="height: 68vh; overflow-x: hidden;">
-        <span style="font-weight: bold;">一、租赁期限与收费标准</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;我们为医疗器械产品提供灵活的租赁期限选择,包括月度、季度、半年度和年度租赁。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以下是不同租赁期限的收费标准:<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.月度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币460元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:根据设备价值,在合同签订时一次性支付人民币1200元。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
-
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.季度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币1380元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
+        <div style="height: 68vh; overflow-x: hidden; padding:1rem; font-size: 12px">
+        <div style="font-weight: bold; text-align: center; font-size: 15px">附件一</div>
+        <span style="font-weight: bold;">一、服务期限与收费标准</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;我们医疗器械产品提供灵活的服务期限选择,包括半年度和年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以下是不同服务期限的收费标准:<br/>
 
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.半年度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币2760元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.半年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币2760元/半年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:根据辅助设备价值,在合同签订时一次性支付人民币__1200__元。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
 
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;4.年度租赁<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)租金:人民币5520元/月。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同月度租赁押金(人民币1200元)。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.年度<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1)服务费:人民币5520元/年度。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2)押金:同半年度辅助设备押金(人民币1200元)。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3)其他费用:如有特殊需求,将根据实际情况另行协商确定。<br/>
         <span style="font-weight: bold;">二、费用支付方式</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.租金支付:根据租赁期限的不同,租金可以按月度、季度、半年度或年度支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.服务费支付:根据服务期限的不同,服务费可以按半年度或年度支付。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.押金支付:在合同签订时一次性支付人民币1200元。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3.其他费用支付:如有特殊需求,将根据实际情况协商确定支付方式和时间。<br/>
-        <span style="font-weight: bold;">三、续租条件与流程</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.续租条件:<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1) 如乙方需续租,可在租赁期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;租金;或乙方通过租赁设备进行续费操作。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2) 在续租的情况下,原合同已支付设备押金直接转为新租赁合同的设备押金,无需另行支付。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3) 续租收费标准如本标准,甲方保留对续租收费进行调整的权利。如遇调整,续租时的具体收费标准将&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以甲方在续租时公布的最新标准为准。<br/>
+        <span style="font-weight: bold;">三、续费条件与流程</span><br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.续费条件:<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1) 如乙方需续费,可在服务期满前10个工作日向甲方申请,甲方同意后,甲乙双方另行签订合同,支付&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;服务费;或乙方通过辅助设备(平板)进行续费操作。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2) 在续费的情况下,原合同已支付辅助设备押金直接转为新续费合同的辅助设备押金,无需另行支付。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;3) 续费标准如本标准,甲方保留对续费后的费用进行调整的权利。如遇调整,续费时的具体收费标准将&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;以甲方在续费时公布的最新标准为准。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.续费流程:双方就续费条件达成一致后,签订新的未来蓝豚强脑系统服务协议或续费协议。<br/>
         <span style="font-weight: bold;">四、违约责任</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.如客户未按时支付租金或押金,我们有权解除合同并要求客户承担相应责任。<br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.如因客户原因导致设备损坏或丢失,客户需按设备价值进行赔偿。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.如乙方未按时支付服务费或辅助设备押金,我们有权解除合同并要求乙方承担相应责任。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.如因乙方原因导致设备损坏或丢失,乙方需按辅助设备价值进行赔偿。<br/>
         <span style="font-weight: bold;">五、其他条框</span><br/>
-        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.本收费标准自合同签订之日起生效,如有变更,我司将提前通知客户。<br/>
+        &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;1.本收费标准自合同签订之日起生效,如有变更,我司将提前通知乙方。<br/>
         &nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;​&nbsp;2.本收费标准最终解释权归我司所有。
-        </div>
+      </div>
         <span slot="footer" class="dialog-footer">
           <el-button type="primary" @click="attachmentOne = false">关 闭</el-button>
         </span>
       </el-dialog>
 
       <el-dialog title="附件二" :visible.sync="attachmentTwo" width="40%" append-to-body>
-        <div>
-          <span style="font-weight: bold;">租赁设备包括以下物料及价格:</span><br/>
+        <div style="height: 68vh; overflow-x: hidden;padding:1rem; font-size: 12px" >
+          <span style="font-weight: bold;">辅助设备包括以下物料及价格:</span><br/>
           <el-table :data="attachmentTwoList">
             <el-table-column prop="id" label="序号"/>
             <el-table-column prop="itemName" label="物料名称"/>
@@ -139,7 +127,7 @@
             <el-table-column prop="unitPrice" label="单价(人民币)"/>
           </el-table><br/>
           总金额:人民币  1200   元<br/>
-          以上价格为租赁设备的初始购买成本,用于计算押金及相关费用。
+          以上价格为辅助设备(平板)初始购买成本,用于计算押金及相关费用。
         </div>
         <span slot="footer" class="dialog-footer">
           <el-button type="primary" @click="attachmentTwo = false">关 闭</el-button>

+ 1 - 1
src/views/patient/historyList/lookDetail.vue

@@ -139,7 +139,7 @@
           </el-descriptions-item>
           <el-descriptions-item>
             <template slot="label">
-              诊结果
+              诊结果
             </template>
             <dict-tag :options="dict.type.diagnose_result_type" :value="defaultVal.diagnoseResult" />
 

+ 1 - 1
src/views/patient/list/lookDetail.vue

@@ -138,7 +138,7 @@
           </el-descriptions-item>
           <el-descriptions-item>
             <template slot="label">
-              诊结果
+              诊结果
             </template>
             <dict-tag :options="dict.type.diagnose_result_type" :value="defaultVal.diagnoseResult" />
 

+ 4 - 4
src/views/system/user/index.vue

@@ -90,14 +90,14 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="isShow?12:24">
+          <el-col :span="isShow?12:24" v-if="isShow && form.roleCodes != 'super_admin'">
             <el-form-item label="角色" prop="roleCodes">
               <el-select style="width: 100%" multiple v-model="form.roleCodes" placeholder="请选择角色">
                 <el-option v-for="item in roleOptions" :key="item.roleCode" :label="item.roleName" :value="item.roleCode"
                   :disabled="item.status == 1"></el-option>
               </el-select>
             </el-form-item>
-          </el-col> -->
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -473,10 +473,10 @@ export default {
     submitForm: function () {
       this.$refs["form"].validate(valid => {
         if (valid) {
+          this.form.roleCodes = this.form.roleCodes.join(',');
           let subForm = JSON.parse(JSON.stringify(this.form))
-          subForm.roleCodes = 'tenant_admin'
+          // subForm.roleCodes = 'tenant_admin'
           if (this.form.id != undefined) {
-
             updateUser(subForm).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;

+ 194 - 0
src/views/wx/applicationBlank/index.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="手机号" prop="mobile">
+        <el-input
+          v-model="queryParams.mobile"
+          placeholder="请输入手机号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="订单状态" prop="payStatus">
+        <el-select v-model.trim="queryParams.payStatus" placeholder="请选择" style="width: 100%;">
+          <el-option v-for="item in payStatusOptions" :key="item.value" :label="item.label" :value="item.value">
+          </el-option>
+        </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-table v-loading="loading" :data="blankList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="手机号" align="center" prop="mobile" />
+      <el-table-column label="推荐医生id" align="center" prop="doctorId" />
+      <el-table-column label="医生所属机构" align="center" prop="orgName" />
+      <el-table-column label="订单id" align="center" prop="payOrderId" />
+      <el-table-column label="支付时间" align="center" prop="sendPayTime" />
+      <el-table-column label="支付状态" align="center" prop="payStatus" >
+        <template slot-scope="scope">
+          {{ getlabel('pay_status', scope.row.payStatus) }}
+        </template>
+      </el-table-column>
+      <el-table-column label="支付金额" align="center" prop="payMoney" >
+        <template slot-scope="scope">
+          {{scope.row.payMoney/100}}
+        </template>
+      </el-table-column>
+      <el-table-column label="描述" align="center" prop="description" />
+      <!-- <el-table-column label="支付人id" align="center" prop="payer" /> -->
+      <!-- <el-table-column label="外部订单id" align="center" prop="transactionId" /> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.payStatus == '2'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row.id)"
+          >订单完成</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.limit"
+          @pagination="getList" />
+  </div>
+</template>
+
+<script>
+import { listBlank, getBlank, updatePayStatusFulfill } from "@/api/wx/applicationBlank";
+
+export default {
+  name: "Blank",
+  dicts: ['pay_status', 'order_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 微信申请表格数据
+      blankList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        page: 1,
+        limit: 10,
+        mobile: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      payStatusOptions: [
+        {
+          value: "1",
+          label: "支付中"
+        },
+        {
+          value: "2",
+          label: "支付完成"
+        },
+        {
+          value: "0",
+          label: "已完成"
+        }
+      ]
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 订单完成
+    handleUpdate(id) {
+      this.$confirm('请确认患者信息是否存在', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        updatePayStatusFulfill(id).then(resp=>{
+            this.$modal.msgSuccess(`成功`);
+            this.resetQuery()
+        })
+      }).catch(() => { });
+
+      
+    },
+    getlabel(key, id) {
+      let name = ''
+      this.payStatusOptions.map((item, index) => {
+        if (item.value == id) {
+          name = item.label
+        }
+      })
+      return name
+    },
+    /** 查询微信申请列表 */
+    getList() {
+      this.loading = true;
+      listBlank(this.queryParams).then(response => {
+        this.blankList = response.data.records;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        mobile: null,
+        doctorId: null,
+        packageId: null,
+        payOrderId: null,
+        sendPayTime: null,
+        payStatus: null,
+        payMoney: null,
+        payer: null,
+        transactionId: null,
+        state: null,
+        createTime: null,
+        updateTime: 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.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+  }
+};
+</script>