From d65aa7fee641733e13fcbcd6c326d6bd27a45d96 Mon Sep 17 00:00:00 2001
From: qx <1084500556@qq.com>
Date: 星期二, 15 四月 2025 11:52:54 +0800
Subject: [PATCH] qx

---
 src/views/reservation/reservations/index.vue |  838 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 801 insertions(+), 37 deletions(-)

diff --git a/src/views/reservation/reservations/index.vue b/src/views/reservation/reservations/index.vue
index d1144aa..a9cb9a9 100644
--- a/src/views/reservation/reservations/index.vue
+++ b/src/views/reservation/reservations/index.vue
@@ -1,5 +1,96 @@
 <template>
   <div class="app-container">
+    <el-dialog
+      :title="title"
+      :visible.sync="open1"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        ref="form1"
+        :model="form1"
+        :rules="rules1"
+        label-width="100px"
+        :inline="true"
+      >
+        <el-form-item label="鍗曚綅鍚嶇О" prop="cnName">
+          <el-input v-model="form1.cnName" placeholder="璇疯緭鍏ヤ腑鏂囧悕绉�" />
+        </el-form-item>
+        <el-form-item label="鑱旂郴浜�" prop="contactPerson">
+          <el-input v-model="form1.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
+        </el-form-item>
+        <el-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone">
+          <el-input v-model="form1.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+        </el-form-item>
+        <el-form-item label="绋庡彿" prop="taxNumber">
+          <el-input v-model="form1.taxNumber" placeholder="璇疯緭鍏ョ◣鍙�" />
+        </el-form-item>
+        <el-form-item label="娉曚汉" prop="legalPerson">
+          <el-input v-model="form1.legalPerson" placeholder="璇疯緭鍏ユ硶浜�" />
+        </el-form-item>
+        <el-form-item label="娉ㄥ唽鍦板潃" prop="registerAddress">
+          <el-input
+            v-model="form1.registerAddress"
+            placeholder="璇疯緭鍏ユ敞鍐屽湴鍧�"
+          />
+        </el-form-item>
+        <el-form-item label="閫氳鍦板潃" prop="mailingAddress">
+          <el-input
+            v-model="form1.mailingAddress"
+            placeholder="璇疯緭鍏ラ�氳鍦板潃"
+          />
+        </el-form-item>
+        <el-form-item label="寮�鎴烽摱琛�" prop="bankAccount">
+          <el-input v-model="form1.bankAccount" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" />
+        </el-form-item>
+        <el-form-item label="閾惰璐︽埛" prop="countNum">
+          <el-input v-model="form1.countNum" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
+        </el-form-item>
+        <el-form-item label="閭" prop="email">
+          <el-input v-model="form1.email" placeholder="璇疯緭鍏ラ偖绠�" />
+        </el-form-item>
+        <el-form-item label="璐熻矗浜�" prop="principal">
+          <el-input v-model="form1.principal" placeholder="璇疯緭鍏ヨ礋璐d汉" />
+        </el-form-item>
+        <el-form-item label="缃戝潃" prop="url">
+          <el-input v-model="form1.url" placeholder="璇疯緭鍏ョ綉鍧�" />
+        </el-form-item>
+        <el-form-item label="浼犵湡" prop="faxNumber">
+          <el-input v-model="form1.faxNumber" placeholder="璇疯緭鍏ヤ紶鐪�" />
+        </el-form-item>
+        <el-form-item label="琛屾斂鍖哄垝鍚嶇О" prop="areaName">
+          <el-input v-model="form1.areaName" placeholder="璇疯緭鍏ヨ鏀垮尯鍒掑悕绉�" />
+        </el-form-item>
+        <el-form-item label="鎺掑簭" prop="orderNum">
+          <el-input v-model="form1.orderNum" placeholder="璇疯緭鍏ユ帓搴�" />
+        </el-form-item>
+        <el-form-item label="鏈夋晥鏃堕棿" prop="validTime">
+          <el-date-picker
+            clearable
+            v-model="form1.validTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨鏈夋晥鏃堕棿"
+          >
+          </el-date-picker> </el-form-item
+        ><br />
+        <el-form-item label="澶囨敞" prop="remark">
+          <el-input
+            v-model="form1.remark"
+            type="textarea"
+            placeholder="璇疯緭鍏ュ唴瀹�"
+            :rows="2"
+            label-width="400px"
+            style="width: 830px"
+            resize="none"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer2">
+        <el-button type="primary" @click="submitFormS">纭� 瀹�</el-button>
+        <el-button @click="cancel1">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
     <el-form
       :model="queryParams"
       ref="queryForm"
@@ -38,20 +129,23 @@
         <el-select
           :remote-method="getRemoteData"
           v-model="queryParams.company"
-          value-key="drugManufacturerId"
           remote
+          default-first-option
+          allow-create
           filterable
+          style="width: 200px"
           placeholder="璇烽�夋嫨鍗曚綅鍚嶇О"
           clearable
-          @change="searchSelect"
+          @change="idFn1"
         >
           <el-option
             v-for="dict in CompanyList"
-            :key="dict.drugManufacturerId"
+            :key="dict.cnName"
             :label="dict.cnName"
-            :value="dict.cnName"
+            :value="dict.drugManufacturerId"
           />
         </el-select>
+        <i class="el-icon-circle-plus-outline" @click="handleAdd1"></i>
       </el-form-item>
       <el-form-item label="棰勭害瓒呮湡" prop="isExpire">
         <el-select
@@ -89,7 +183,6 @@
           size="mini"
           :disabled="multiple"
           @click="batch"
-         
           >鎾ら攢棰勭害</el-button
         >
         <!--  v-hasPermi="['reservation:reservation:remove']" -->
@@ -100,8 +193,17 @@
           size="mini"
           :disabled="single"
           @click="receipt"
-          
           >琛ユ墦灏忕エ</el-button
+        >
+        <!-- v-hasPermi="['reservation:reservation:remove']" -->
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          size="mini"
+          :disabled="multiple"
+          @click="Groupsignin"
+          >鍥綋绛惧埌</el-button
         >
         <!-- v-hasPermi="['reservation:reservation:remove']" -->
       </el-col>
@@ -273,17 +375,17 @@
             type="text"
             icon="el-icon-s-order"
             @click="handleUpdate1(scope.row)"
-            v-hasPermi="['reservation:reservation:edit']"
             title="棰勭害璇︾粏"
           ></el-button>
+          <!--  v-hasPermi="['reservation:reservation:edit']" -->
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['reservation:reservation:edit']"
             title="淇敼"
           ></el-button>
+          <!-- v-hasPermi="['reservation:reservation:edit']" -->
           <el-button
             size="mini"
             type="text"
@@ -452,12 +554,27 @@
                   style="width: 160px"
                 />
               </el-form-item>
-              <el-form-item label="宸ヤ綔鍗曚綅" prop="company">
-                <el-input
+              <el-form-item label="鍗曚綅鍚嶇О" prop="company">
+                <el-select
+                  :remote-method="getRemoteData"
                   v-model="formIn.company"
-                  placeholder="璇疯緭鍏ュ伐浣滃崟浣�"
-                  style="width: 410px"
-                />
+                  remote
+                  default-first-option
+                  allow-create
+                  filterable
+                  style="width: 200px"
+                  placeholder="璇烽�夋嫨鍗曚綅鍚嶇О"
+                  clearable
+                  @change="idFn1"
+                >
+                  <el-option
+                    v-for="dict in CompanyList"
+                    :key="dict.cnName"
+                    :label="dict.cnName"
+                    :value="dict.drugManufacturerId"
+                  />
+                </el-select>
+                <i class="el-icon-circle-plus-outline" @click="handleAdd1"></i>
               </el-form-item>
               <el-form-item label="鑱屼笟" prop="career">
                 <el-select
@@ -704,18 +821,136 @@
                   </el-form>
                 </template>
 
-                <div style="text-align: center; margin-bottom: 10px">
+                <div
+                  style="
+                    display: flex;
+                    align-items: center;
+                    justify-content: flex-start;
+                    width: 100%;
+                  "
+                >
+                  <div
+                    style="
+                      white-space: nowrap;
+                      overflow: hidden;
+                      text-overflow: ellipsis;
+                      margin-left: 46px;
+                      font-size: 16px;
+                      margin-right: 20px;
+                    "
+                  >
+                    宸查�夐」鐩潯鏁帮細<span
+                      style="font-weight: 700; color: red; margin-right: 5px"
+                      >{{ this.tableData1.length || 0 }}</span
+                    >鏉�
+                  </div>
                   宸查�夐」鐩垪琛�
                 </div>
                 <div
                   style="
                     padding: 0px 6px;
                     border: 1px solid #e6ebf5;
+                    max-height: 650%;
+                    overflow: auto;
+                    width: 916px;
+                    margin-left: 35px;
+                  "
+                >
+                  <el-table :data="tableData1" border style="width: 100%">
+                    <el-table-column
+                      prop="proName"
+                      label="椤圭洰"
+                      width="180"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column
+                      prop="proType"
+                      label="鎬у埆"
+                      width="50"
+                      align="center"
+                    >
+                      <template slot-scope="scope">
+                        <template v-if="isAll(scope.row.proType)">
+                          鍏ㄩ儴
+                        </template>
+                        <template v-else>
+                          <dict-tag
+                            :options="dict.type.sys_user_sex"
+                            :value="scope.row.proType"
+                          />
+                        </template>
+                      </template>
+                    </el-table-column>
+
+                    <el-table-column
+                      prop="ordPrice"
+                      label="搴旀敹閲戦"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column label="鎶樻墸" width="160px" align="center">
+                      <template slot-scope="scope">
+                        <el-input-number
+                          v-model.number="scope.row.discount"
+                          @input="validateDiscount(scope.row)"
+                          placeholder="杈撳叆鎶樻墸"
+                          size="small"
+                          type="number"
+                          :precision="1"
+                          :step="0.1"
+                          :max="10"
+                          :min="0"
+                          :disabled="true"
+                        >
+                        </el-input-number>
+                      </template>
+                    </el-table-column>
+                    <el-table-column
+                      prop="nowPrice"
+                      label="瀹炴敹閲戦"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column
+                      prop="proCheckMethod"
+                      label="鏄惁绌鸿吂"
+                      align="center"
+                    >
+                      <template slot-scope="scope">
+                        <dict-tag
+                          :options="dict.type.sys_yes_no"
+                          :value="scope.row.proCheckMethod"
+                        />
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="鎿嶄綔" align="center" width="80px">
+                      <template slot-scope="scope">
+                        <el-button
+                          size="mini"
+                          type="text"
+                          icon="el-icon-delete"
+                          @click="handleDelete1(scope.row)"
+                          title="鍒犻櫎"
+                        >
+                        </el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+
+                <!-- <div style="text-align: center; margin-bottom: 10px">
+                  宸查�夐」鐩垪琛�
+                </div> -->
+                <!-- <div
+                  style="
+                    padding: 0px 6px;
+                    border: 1px solid #e6ebf5;
                     max-height: 420px;
                     overflow: auto;
                   "
-                >
-                  <el-collapse v-model="index" accordion v-if="list3">
+                > -->
+                <!-- <el-collapse v-model="index" accordion v-if="list3">
                     <div
                       class="info1"
                       v-for="(item, index) in tableData1"
@@ -733,6 +968,16 @@
                             item.nowPrice +
                             "鍏�)"
                           }}
+                          <div style="font-size: 16px; margin-left: 20px">
+                            宸查�夐」鐩潯鏁帮細<span
+                              style="
+                                font-weight: 700 !important;
+                                color: red;
+                                margin-right: 5px;
+                              "
+                              >{{ item.list.length || 0 }}</span
+                            >鏉�
+                          </div>
                         </template>
                         <el-table
                           :data="item.list"
@@ -748,7 +993,39 @@
                           </el-table-column>
                           <el-table-column prop="ordPrice" label="搴旀敹閲戦">
                           </el-table-column>
+                          <el-table-column label="鎶樻墸">
+                            <template slot-scope="scope">
+                              <el-input-number
+                                v-model.number="scope.row.discount"
+                                @input="validateDiscount(scope.row)"
+                                placeholder="杈撳叆鎶樻墸"
+                                size="small"
+                                type="number"
+                                :precision="1"
+                                :step="0.1"
+                                :max="10"
+                                :min="0"
+                              >
+                              </el-input-number>
+                            </template>
+                          </el-table-column>
                           <el-table-column prop="nowPrice" label="瀹炴敹閲戦">
+                          </el-table-column>
+                          <el-table-column
+                            label="鎿嶄綔"
+                            align="center"
+                            width="80px"
+                          >
+                            <template slot-scope="scope">
+                              <el-button
+                                size="mini"
+                                type="text"
+                                icon="el-icon-delete"
+                                @click="handleDelete1(scope.row)"
+                                title="鍒犻櫎"
+                              >
+                              </el-button>
+                            </template>
                           </el-table-column>
                         </el-table>
                       </el-collapse-item>
@@ -819,8 +1096,8 @@
                         </el-table>
                       </el-collapse-item>
                     </div>
-                  </el-collapse>
-                </div>
+                  </el-collapse> -->
+                <!-- </div> -->
               </div>
             </el-col>
           </el-row>
@@ -842,6 +1119,49 @@
         </div>
       </template>
     </el-drawer>
+
+    <el-dialog
+      title="PDF 棰勮"
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+    >
+      <div class="main">
+        <iframe
+          id="printIframe"
+          :src="url"
+          frameborder="0"
+          style="width: 100%; height: 100%"
+        ></iframe>
+      </div>
+    </el-dialog>
+
+    <el-dialog
+      :title="title"
+      :visible.sync="open2"
+      width="800px"
+      append-to-body
+    >
+      <el-form ref="form" :model="forms" label-width="100px" :inline="true">
+        <el-form-item label="浣撴绫诲埆">
+          <el-select
+            style="width: 150px"
+            v-model="forms.tjCategory"
+            placeholder="璇烽�夋嫨浣撴绫诲埆"
+          >
+            <el-option
+              v-for="dict in dict.type.dict_tjtype"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer2">
+        <el-button type="primary" @click="submitType">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
 
     <div
       style="
@@ -1025,12 +1345,27 @@
                   style="width: 160px"
                 />
               </el-form-item>
-              <el-form-item label="宸ヤ綔鍗曚綅" prop="company">
-                <el-input
+              <el-form-item label="鍗曚綅鍚嶇О" prop="company">
+                <el-select
+                  :remote-method="getRemoteData"
                   v-model="formIn.company"
-                  placeholder="璇疯緭鍏ュ伐浣滃崟浣�"
-                  style="width: 410px"
-                />
+                  remote
+                  default-first-option
+                  allow-create
+                  filterable
+                  style="width: 200px"
+                  placeholder="璇烽�夋嫨鍗曚綅鍚嶇О"
+                  clearable
+                  @change="idFn1"
+                >
+                  <el-option
+                    v-for="dict in CompanyList"
+                    :key="dict.cnName"
+                    :label="dict.cnName"
+                    :value="dict.drugManufacturerId"
+                  />
+                </el-select>
+                <i class="el-icon-circle-plus-outline" @click="handleAdd1"></i>
               </el-form-item>
               <el-form-item label="鑱屼笟" prop="career">
                 <el-select
@@ -1239,9 +1574,6 @@
                         ></el-option>
                       </el-select>
                     </el-form-item>
-
-                    <!-- <div class="tab1"> -->
-                    <!-- <el-form :inline="true" class="tab1"> -->
                     <el-form-item label="搴旀敹閲戦">
                       <el-input
                         placeholder="搴旀敹閲戦"
@@ -1251,7 +1583,6 @@
                       ></el-input>
                     </el-form-item>
                     <el-form-item label="浼樻儬鎶樻墸">
-                      <!-- <el-input style="width: 100px" type="number" v-model="discount" :value="discount"></el-input> -->
                       <el-input-number
                         ref="inputNumber"
                         style="width: 130px"
@@ -1289,7 +1620,101 @@
                 <div style="text-align: center; margin-bottom: 10px">
                   宸查�夐」鐩垪琛�
                 </div>
+
                 <div
+                  style="
+                    padding: 0px 6px;
+                    border: 1px solid #e6ebf5;
+                    max-height: 650%;
+                    overflow: auto;
+                    width: 916px;
+                    margin-left: 35px;
+                  "
+                >
+                  <el-table :data="tableData1" border style="width: 100%">
+                    <el-table-column
+                      prop="proName"
+                      label="椤圭洰"
+                      width="180"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column
+                      prop="proType"
+                      label="鎬у埆"
+                      width="50"
+                      align="center"
+                    >
+                      <template slot-scope="scope">
+                        <template v-if="isAll(scope.row.proType)">
+                          鍏ㄩ儴
+                        </template>
+                        <template v-else>
+                          <dict-tag
+                            :options="dict.type.sys_user_sex"
+                            :value="scope.row.proType"
+                          />
+                        </template>
+                      </template>
+                    </el-table-column>
+
+                    <el-table-column
+                      prop="ordPrice"
+                      label="搴旀敹閲戦"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column label="鎶樻墸" width="160px" align="center">
+                      <template slot-scope="scope">
+                        <el-input-number
+                          v-model.number="scope.row.discount"
+                          @input="validateDiscount(scope.row)"
+                          placeholder="杈撳叆鎶樻墸"
+                          size="small"
+                          type="number"
+                          :precision="1"
+                          :step="0.1"
+                          :max="10"
+                          :min="0"
+                          :disabled="true"
+                        >
+                        </el-input-number>
+                      </template>
+                    </el-table-column>
+                    <el-table-column
+                      prop="nowPrice"
+                      label="瀹炴敹閲戦"
+                      align="center"
+                    >
+                    </el-table-column>
+                    <el-table-column
+                      prop="proCheckMethod"
+                      label="鏄惁绌鸿吂"
+                      align="center"
+                    >
+                      <template slot-scope="scope">
+                        <dict-tag
+                          :options="dict.type.sys_yes_no"
+                          :value="scope.row.proCheckMethod"
+                        />
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="鎿嶄綔" align="center" width="80px">
+                      <template slot-scope="scope">
+                        <el-button
+                          size="mini"
+                          type="text"
+                          icon="el-icon-delete"
+                          @click="handleDelete1(scope.row)"
+                          title="鍒犻櫎"
+                        >
+                        </el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+
+                <!--  <div
                   style="
                     padding: 0px 6px;
                     border: 1px solid #e6ebf5;
@@ -1297,6 +1722,14 @@
                     overflow: auto;
                   "
                 >
+                  <div
+                    style="
+                      padding: 0px 6px;
+                      border: 1px solid #e6ebf5;
+                      max-height: 420px;
+                      overflow: auto;
+                    "
+                  ></div>
                   <el-collapse v-model="index" accordion v-if="list3">
                     <div
                       class="info1"
@@ -1315,7 +1748,18 @@
                             item.nowPrice +
                             ".00鍏�)"
                           }}
+                          <div style="font-size: 16px; margin-left: 20px">
+                            宸查�夐」鐩潯鏁帮細<span
+                              style="
+                                font-weight: 700 !important;
+                                color: red;
+                                margin-right: 5px;
+                              "
+                              >{{ item.list.length || 0 }}</span
+                            >鏉�
+                          </div>
                         </template>
+
                         <el-table
                           :data="item.list"
                           border
@@ -1335,6 +1779,22 @@
                           >
                           </el-table-column>
                           <el-table-column prop="ordPrice" label="搴旀敹閲戦">
+                          </el-table-column>
+                          <el-table-column label="鎶樻墸">
+                            <template slot-scope="scope">
+                              <el-input-number
+                                v-model.number="scope.row.discount"
+                                @input="validateDiscount(scope.row)"
+                                placeholder="杈撳叆鎶樻墸"
+                                size="small"
+                                type="number"
+                                :precision="1"
+                                :step="0.1"
+                                :max="10"
+                                :min="0"
+                              >
+                              </el-input-number>
+                            </template>
                           </el-table-column>
                           <el-table-column prop="nowPrice" label="瀹炴敹閲戦">
                           </el-table-column>
@@ -1410,7 +1870,7 @@
                       </el-collapse-item>
                     </div>
                   </el-collapse>
-                </div>
+                </div> -->
               </div>
             </el-col>
           </el-row>
@@ -1436,6 +1896,9 @@
 </template>
 
 <script>
+import { addComp, addPlOrderAndDetail } from "@/api/system/comp";
+import Big from "big.js";
+import { Loading } from "element-ui";
 import {
   listReservation,
   gettjCancel,
@@ -1450,6 +1913,9 @@
   getPackageListName,
   getaddtTransition,
   getTransitionList,
+  getconfigKey,
+  delTbBycusCardIdAndProId,
+  getTransitionList1,
 } from "@/api/system/tijian";
 import { getCompany, queryCompany } from "@/api/team/tuanti";
 import user from "@/store/modules/user";
@@ -1474,7 +1940,6 @@
   ],
   data() {
     let checkPhoneNum = (rule, value, callback) => {
-      console.log(value);
       let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
       if (value == "" && value == undefined && !value) {
         return callback("");
@@ -1496,7 +1961,9 @@
           return time.getTime() < Date.now() - 8.64e7; // 涓嶅彲閫夊巻鍙插ぉ銆佷笉鍙�夊綋鍓嶅ぉ銆佸彲閫夋湭鏉ュぉ
         },
       },
+      discount: 10,
       taocan: false,
+      webSocket: null,
       defaultKeys: [],
       value1: "",
       pacName: "",
@@ -1507,6 +1974,10 @@
       dialogVisibles: false,
       src: "",
       url: "",
+      open2: false,
+      forms: {
+        tjCategory: "12",
+      },
       dialogVisible: false,
       /** 鐓х浉鏈哄脊绐楁ā鍧�-start */
       videoWidth: 200,
@@ -1562,8 +2033,9 @@
       multiple: true,
       nodeobj: {},
       // 鏄惁鏄剧ず寮瑰嚭灞�
-      Seachopen: false,
+
       pacId: "",
+      cusIds: [],
       // 缁撴灉
       result: "",
       proIds: [],
@@ -1607,9 +2079,47 @@
         cusNumber: null,
         cusIsvip: null,
       },
-      formIn: {},
+      formIn: {
+        name: "",
+        age: "",
+        idCard: "",
+        remark: null,
+        pacName: "",
+        cusaddr: null,
+        idType: null,
+        ageUnit: null,
+        sex: null,
+        phoe: "",
+        nation: null,
+        email: "",
+        marriage: null,
+        address: "",
+        tjCategory: null,
+        company: "",
+        career: null,
+        reservationTime: null,
+        timeRegion: null,
+        indexCard: "",
+        department: "",
+      },
       fmobj: {},
       // 琛ㄥ崟鏍¢獙
+      form1: {},
+      open1: false,
+      rules1: {
+        cnName: [{ required: true, trigger: "blur" }],
+        contactPerson: [{ required: true, trigger: "blur" }],
+        contactPhone: [
+          {
+            required: true,
+            trigger: "blur",
+          },
+          {
+            pattern: /^1[3-9]\d{9}$/,
+            trigger: "blur",
+          },
+        ],
+      },
       rules: {
         cusName: [
           { required: true, validator: checkPhoneNum, trigger: "blur" },
@@ -1660,6 +2170,7 @@
       reservationList: [],
       // 寮瑰嚭灞傛爣棰�
       title: "",
+      valueUrls: "ws://127.0.0.1:6789/websocket",
       drawer: false,
       drawer1: false,
       // 鏌ヨ鍙傛暟
@@ -1716,6 +2227,117 @@
     this.getList();
   },
   methods: {
+    isAll(value) {
+      return value === "" || value === null;
+    },
+    validateDiscount(row) {
+      if (row.discount == null || isNaN(row.discount)) {
+        row.discount = 10;
+      }
+      if (row.discount > 10) {
+        row.discount = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у��
+      } else if (row.discount < 0) {
+        row.discount = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓��
+      }
+      this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫
+    },
+    updateProPrice(row) {
+      const ordPrice = new Big(row.ordPrice || 0);
+      const discount = new Big(row.discount || 0);
+      const result = ordPrice.times(discount.div(10)); // ordPrice * (discount / 10)
+      row.nowPrice = result.toNumber();
+      this.TotalPrice = this.tableData1.reduce((sum, item) => {
+        return sum.plus(new Big(item.nowPrice || "0"));
+      }, new Big(0));
+
+      this.discount =
+        (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10;
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete1(row) {
+      // console.log(row);
+      let data = {
+        cusCardId: row.cusId,
+        proId: row.parentProId,
+      };
+      this.$modal
+        .confirm("鏄惁纭鍒犻櫎锛�")
+        .then(() => {
+          return delTbBycusCardIdAndProId(data);
+        })
+        .then(() => {
+          this.TotalPrice1 = 0;
+          getTransitionList1(row.cusId).then((response) => {
+            this.tableData1 = response.data;
+
+            this.tableData1.forEach((item) => {
+              this.TotalPrice1 += item.ordPrice;
+              this.TotalPrice += item.nowPrice;
+            });
+            this.TotalPrice = this.tableData1.reduce((sum, item) => {
+              return sum.plus(new Big(item.nowPrice || "0"));
+            }, new Big(0));
+            this.discount =
+              (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) *
+              10;
+          });
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    getCompanyList() {
+      this.loading = true;
+      getconfigKey("team_reservation_default_day").then((res) => {
+        this.queryParams.yxts = res.msg;
+      });
+      getCompany(this.queryParam).then((response) => {
+        this.CompanyList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    cancel1() {
+      this.open1 = false;
+      this.reset1();
+    },
+    submitFormS() {
+      this.$refs["form1"].validate((valid) => {
+        if (valid) {
+          addComp(this.form1).then((response) => {
+            this.$modal.msgSuccess("鏂板鎴愬姛");
+            this.open1 = false;
+            this.getCompanyList();
+          });
+        }
+      });
+    },
+    reset1() {
+      this.form1 = {
+        company: "",
+        payType: "",
+        name: "",
+        phoe: "",
+        signingPic: "",
+        discount: "",
+      };
+    },
+    handleAdd1() {
+      this.reset1();
+      this.open1 = true;
+      this.title = "娣诲姞浣撴鍗曚綅淇℃伅缁存姢";
+    },
+    idFn1(value) {
+      if (value) {
+        this.form.dictCompId = value;
+        this.CompanyList.forEach((item) => {
+          if (item.drugManufacturerId == this.form.dictCompId) {
+            this.form.compName = item.cnName;
+            this.queryParams.company = item.cnName;
+          }
+        });
+      }
+    },
     /** 鏌ヨ浣撴棰勭害鍒楄〃 */
     getList() {
       this.loading = true;
@@ -1735,6 +2357,7 @@
     // 鍙栨秷鎸夐挳
     cancel() {
       this.open = false;
+      this.open2 = false;
       this.reset();
     },
 
@@ -1798,10 +2421,10 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
+      this.cusIds = selection.map((item) => item.idCard);
       selection.forEach((item) => {
         this.fmobj = item;
       });
-      console.log(this.fmobj);
       this.ids = selection.map((item) => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
@@ -1816,7 +2439,6 @@
 
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
-      console.log(row);
       this.title = "淇敼浣撴棰勭害";
       this.formIn = row;
       this.form.tjType = this.formIn.tjType;
@@ -1880,14 +2502,13 @@
           getReservation(id).then((response) => {
             if (response.data) {
               let cusId = response.data.idCard;
-              getTransitionList(cusId).then((response) => {
+              getTransitionList1(cusId).then((response) => {
                 if (response.data) {
                   this.tableData1 = response.data;
                   if (this.tableData1.length != 0) {
                     this.TotalPrice1 = 0;
                     this.tableData1.forEach((item) => {
                       this.TotalPrice1 += item.nowPrice;
-                      console.log(this.discount);
                       this.TotalPrice = (
                         this.TotalPrice1 *
                         (this.discount / 10)
@@ -1991,9 +2612,10 @@
         getReservation(id).then((response) => {
           if (response.data) {
             let cusId = response.data.idCard;
-            getTransitionList(cusId).then((response) => {
+            getTransitionList1(cusId).then((response) => {
               if (response.data) {
                 this.tableData1 = response.data;
+
                 if (this.tableData1.length != 0) {
                   this.TotalPrice1 = 0;
                   this.tableData1.forEach((item) => {
@@ -2096,6 +2718,143 @@
         this.treedataList = JSON.parse(JSON.stringify(this.dXData));
         return;
       }
+    },
+
+    Groupsignin() {
+      this.open2 = true;
+    },
+
+    submitType() {
+      // let cusIds = [];
+      // this.selectList.forEach((item) => {
+      //   cusIds.push(item.idCard);
+      // });
+      let loadingInstance1 = Loading.service({
+        fullscreen: true,
+        text: "绛惧埌涓�",
+      });
+      let data = {
+        cusIds: this.cusIds,
+        tjCategory: this.forms.tjCategory,
+      };
+      this.open2 = false;
+      addPlOrderAndDetail(data).then((res) => {
+        if (res.code == 200) {
+          this.open2 = false;
+          this.$modal.msgSuccess("绛惧埌鎴愬姛");
+          if (res.file) {
+            let base64 = res.file;
+            this.base64ToBlob({
+              b64data: base64,
+              contentType: "application/pdf",
+            }).then((res) => {
+              this.dialogVisible = true;
+              // 杞悗鍚庣殑blob瀵硅薄
+              try {
+                this.url = res.preview;
+              } catch (error) {
+                this.url = window.webkitURL.createObjectURL(res.preview);
+              }
+            });
+          } else {
+            let _this = this;
+            this.$nextTick(() => {
+              // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+              loadingInstance1.close();
+            });
+            var websocket = null;
+            var url = _this.valueUrls;
+            if ("WebSocket" in window) {
+              websocket = new WebSocket(url);
+            } else if ("MozWebSocket" in window) {
+              websocket = new MozWebSocket(url);
+            } else {
+            }
+            if (websocket == null) {
+              alert("11111");
+            }
+            websocket.onopen = function () {
+              console.log('res',res);
+              
+              try {
+                // 杩炴帴璁惧
+                var jsonObjs = {
+                  type: 4,
+                  data: res,
+                };
+                var jStrs = JSON.stringify(jsonObjs);
+                websocket.send(jStrs);
+              } catch (err) {
+                var tryTime = 0;
+                // 閲嶈瘯10娆★紝姣忔涔嬮棿闂撮殧3绉�
+                if (tryTime < 1) {
+                  var t1 = setTimeout(function () {
+                    tryTime++;
+                    var jsonObjs = {
+                      type: 4,
+                      data: res,
+                    };
+                    var jStrs = JSON.stringify(jsonObjs);
+                    websocket.send(jStrs);
+                  }, 1 * 1000);
+                } else {
+                  console.error("閲嶈繛澶辫触.");
+                }
+              }
+            };
+            websocket.onclose = function () {
+              alert("杩炴帴鍏抽棴");
+            };
+            websocket.onmessage = function (event) {
+              var resultObj = JSON.parse(event.data);
+              _this.cardreader = false;
+            };
+
+            //杩炴帴鍙戠敓閿欒鐨勫洖璋冩柟娉�
+            websocket.onerror = function () {
+              alert("璇锋鏌ヨ繛鎺ユ槸鍚︽甯�");
+            };
+
+            this.getList();
+          }
+        } else {
+          this.$nextTick(() => {
+            // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+            loadingInstance1.close();
+          });
+        }
+      });
+    },
+
+    base64ToBlob({ b64data = "", contentType = "", sliceSize = 512 } = {}) {
+      return new Promise((resolve, reject) => {
+        // 浣跨敤 atob() 鏂规硶灏嗘暟鎹В鐮�
+        let byteCharacters = atob(b64data);
+        let byteArrays = [];
+        for (
+          let offset = 0;
+          offset < byteCharacters.length;
+          offset += sliceSize
+        ) {
+          let slice = byteCharacters.slice(offset, offset + sliceSize);
+          let byteNumbers = [];
+          for (let i = 0; i < slice.length; i++) {
+            byteNumbers.push(slice.charCodeAt(i));
+          }
+          // 8 浣嶆棤绗﹀彿鏁存暟鍊肩殑绫诲瀷鍖栨暟缁勩�傚唴瀹瑰皢鍒濆鍖栦负 0銆�
+          // 濡傛灉鏃犳硶鍒嗛厤璇锋眰鏁扮洰鐨勫瓧鑺傦紝鍒欏皢寮曞彂寮傚父銆�
+          byteArrays.push(new Uint8Array(byteNumbers));
+        }
+        let result = new Blob(byteArrays, {
+          type: contentType,
+        });
+        result = Object.assign(result, {
+          // jartto: 杩欓噷涓�瀹氳澶勭悊涓�涓� URL.createObjectURL
+          preview: URL.createObjectURL(result),
+          // name: `鍥剧墖绀轰緥.png`,
+        });
+        resolve(result);
+      });
     },
 
     // 鐐瑰嚮鑾峰彇姣忎釜鏍戣妭鐐�
@@ -2504,7 +3263,12 @@
   -moz-border-radius: 2em;
   border-radius: 2em;
 }
-
+.dialog-footer2 {
+  width: 960px;
+  height: 36px;
+  display: flex;
+  justify-content: center;
+}
 /* 淇敼 婊戝潡 */
 #printIframe::-webkit-scrollbar-thumb {
   background-color: #dcdfe6;

--
Gitblit v1.8.0