From d23ab1d66456d5dd8aa8645bb262deef4e70a9eb Mon Sep 17 00:00:00 2001
From: lkk <364857242@qq.com>
Date: 星期五, 17 一月 2025 19:02:01 +0800
Subject: [PATCH] 2

---
 src/views/hosp/order/index.vue |  354 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 250 insertions(+), 104 deletions(-)

diff --git a/src/views/hosp/order/index.vue b/src/views/hosp/order/index.vue
index 940c2db..9d7b6c4 100644
--- a/src/views/hosp/order/index.vue
+++ b/src/views/hosp/order/index.vue
@@ -42,7 +42,7 @@
       <el-form-item
         label="鍗曚綅鍚嶇О"
         prop="tjCompName"
-        style="margin-left: 20px;margin-right: 500px;"
+        style="margin-left: 20px; margin-right: 500px"
       >
         <el-select
           :remote-method="getRemoteData"
@@ -54,7 +54,6 @@
           placeholder="璇烽�夋嫨鍗曚綅鍚嶇О"
           clearable
           @change="searchSelect"
-          
         >
           <el-option
             v-for="dict in CompanyList"
@@ -64,10 +63,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item
-        label="鐘舵��"
-        prop="zt"
-      >
+      <el-form-item label="鐘舵��" prop="zt">
         <el-select
           :remote-method="getRemoteData"
           v-model="queryParams.zt"
@@ -77,7 +73,6 @@
           placeholder="璇烽�夋嫨鐘舵��"
           clearable
           @change="searchSelect"
-          
         >
           <el-option
             v-for="item in ztList"
@@ -87,7 +82,11 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="鐧昏鏃堕棿" prop="createTimeList" style="margin-right: 107px;" >
+      <el-form-item
+        label="鐧昏鏃堕棿"
+        prop="createTimeList"
+        style="margin-right: 107px"
+      >
         <el-date-picker
           v-model="createTimeList"
           type="datetimerange"
@@ -142,20 +141,25 @@
         >
       </el-form-item>
     </el-form>
-    <!-- <div class="timeline-wrapper">
-    <el-timeline :reverse="false" class="horizontal-timeline">
-      <el-timeline-item
-        v-for="(item, index) in timelineData"
-        :key="index"
-        :timestamp="item.timestamp"
-        :position="index % 2 === 0 ? 'left' : 'right'">
-        <el-card :body-style="{ padding: '20px' }">
-          <h3>{{ item.title }}</h3>
-          <p>{{ item.description }}</p>
-        </el-card>
-      </el-timeline-item>
-    </el-timeline>
-  </div> -->
+
+    <div v-if="shijianlist.length > 0" style="margin-bottom: 20px">
+      {{ findNameByTjnum(shijianlist[shijianlist.length - 1].tjNUm) }}
+      <el-steps
+        :space="200"
+        :active="shijianlist[shijianlist.length - 1].sjz"
+        finish-status="success"
+        align-center
+      >
+        <el-step title="鏈"></el-step>
+        <el-step title="鍦ㄦ"></el-step>
+        <el-step title="宸插畬鎴�"></el-step>
+        <el-step title="宸插鏍�"></el-step>
+        <el-step title="鐢熸垚鎶ュ憡"></el-step>
+        <el-step title="鎶ュ憡鏍告敹"></el-step>
+        <el-step title="宸插嚭鎶ュ憡"></el-step>
+      </el-steps>
+    </div>
+
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -226,6 +230,16 @@
           :disabled="single"
           v-hasPermi="['hosp:order:export']"
           >鎵撳嵃琛ュ綍鍗�</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          size="mini"
+          @click="ForceChexiao"
+          :disabled="single"
+          v-hasPermi="['qzcx']"
+          >寮哄埗鎾ら攢</el-button
         >
       </el-col>
       <right-toolbar
@@ -402,14 +416,14 @@
         </el-table-column>
         <!-- <el-table-column label="鍒涘缓浜�" align="center" prop="createBy" /> -->
         <!-- <el-table-column label="鏇存柊浜�" align="center" prop="updateBy" /> -->
-       <!--  <el-table-column
+        <!--  <el-table-column
           label="鍗曚綅宸ュ彿"
           align="center"
           prop="firmWorkId"
           width="100px"
           :show-overflow-tooltip="true"
         /> -->
-        
+
         <!-- <el-table-column label="閮ㄩ棬鍚�" align="center" prop="firmDeptName" /> -->
 
         <!-- <el-table-column label="瀹㈡埛鐓х墖" align="center" prop="photo" /> -->
@@ -644,6 +658,7 @@
                       width="260px"
                     >
                     </el-table-column>
+                  
                     <el-table-column prop="proPrice" label="鍘熶环" width="56px">
                     </el-table-column>
 
@@ -748,7 +763,9 @@
                 >
                   <el-table-column prop="propinName" label="妫�鏌ラ」鐩�">
                   </el-table-column>
-                  <el-table-column prop="proPrice" label="鍘熶环" width="56px">
+                  <el-table-column prop="sl" label="鏁伴噺" width="56px">
+                  </el-table-column>
+                    <el-table-column prop="proPrice" label="鍘熶环" width="56px">
                   </el-table-column>
                   <el-table-column
                     prop="proName"
@@ -756,6 +773,7 @@
                     width="260px"
                   >
                   </el-table-column>
+             
 
                   <el-table-column
                     label="鎿嶄綔"
@@ -827,7 +845,7 @@
                         style="width: 90px"
                       ></el-input>
                     </el-form-item>
-                    <el-form-item label="浠樻绫诲瀷" prop="payType">
+                    <el-form-item label="浠樻绫诲瀷">
                       <el-select
                         style="width: 120px"
                         v-model="payType"
@@ -1097,7 +1115,9 @@
           >
             <el-table-column prop="propinName" label="妫�鏌ラ」鐩�">
             </el-table-column>
-            <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="260px">
+            <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="200px">
+            </el-table-column>
+            <el-table-column prop="sl" label="鏁伴噺" width="56px">
             </el-table-column>
             <el-table-column prop="proPrice" label="鍘熶环" width="56px">
             </el-table-column>
@@ -1124,7 +1144,90 @@
         </div>
       </div>
 
-      <div class="heji">
+      <el-form
+        :model="form"
+        inline
+        style="display: flex; justify-content: space-between; margin-top: 20px"
+      >
+        <!-- 浣撴绫诲瀷 -->
+        <el-form-item label="浣撴绫诲瀷" prop="tjType" style="display: flex">
+          <div class="type">
+            {{ { 1: "鍥㈤槦", 2: "涓汉", 3: "鍥綋绁�" }[form.tjType] }}
+          </div>
+        </el-form-item>
+
+        <!-- 鍘熶环 -->
+        <el-form-item label="鍘熶环" style="display: flex">
+          <el-input
+            placeholder="鍘熶环"
+            :value="TotalPrice1"
+            disabled
+            style="width: 90px"
+          ></el-input>
+        </el-form-item>
+
+        <!-- 鎶樻墸璁惧畾 -->
+        <el-form-item label="鎶樻墸" style="display: flex">
+          <el-input
+            style="width: 90px"
+            type="number"
+            v-model="discount"
+            :value="discount"
+          ></el-input>
+        </el-form-item>
+
+        <!-- 搴斾粯閲戦 -->
+        <el-form-item label="搴斾粯" style="display: flex">
+          <el-input
+            placeholder="搴斾粯閲戦"
+            :value="TotalPrice1 * (discount / 10)"
+            style="width: 90px"
+          ></el-input>
+        </el-form-item>
+
+        <!-- 浠樻绫诲瀷 -->
+        <el-form-item label="浠樻绫诲瀷" prop="payType" style="display: flex">
+          <el-select
+            style="width: 120px"
+            v-model="payType"
+            placeholder="璇烽�夋嫨浠樻绫诲瀷"
+            @change="onPayTypeChange"
+          >
+            <el-option
+              v-for="dict in dict.type.dict_pay_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <!-- 缁撶畻鏂瑰紡 -->
+        <el-form-item label="缁撶畻鏂瑰紡" prop="jsType" style="display: flex">
+          <el-select
+            v-model="jsType"
+            placeholder="璇烽�夋嫨缁撶畻鏂瑰紡"
+            style="width: 130px"
+            clearable
+          >
+            <el-option
+              v-for="dict in dict.type.reservation_pay_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <!-- 鎻愪氦鎸夐挳 -->
+        <el-form-item style="display: flex">
+          <el-button type="primary" @click="submitPrice1" :disabled="confirm">
+            鎻愪氦
+          </el-button>
+        </el-form-item>
+      </el-form>
+
+      <!-- <div class="heji">
         <div class="o">
           <el-form
             :model="form"
@@ -1179,6 +1282,21 @@
                 ></el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="缁撶畻鏂瑰紡" prop="payType">
+              <el-select
+                v-model="payType"
+                placeholder="璇烽�夋嫨缁撶畻鏂瑰紡"
+                style="width: 130px"
+                clearable
+              >
+                <el-option
+                  v-for="dict in dict.type.reservation_pay_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
             <el-form-item style="display: flex">
               <el-button
                 type="primary"
@@ -1189,7 +1307,7 @@
             </el-form-item>
           </el-form>
         </div>
-      </div>
+      </div> -->
     </el-dialog>
 
     <!-- 娣诲姞鎴栦慨鏀逛綋妫�璁板綍瀵硅瘽妗� -->
@@ -1502,6 +1620,7 @@
   getTransitionInfo,
   getBlproByTjh,
   revokeBlProByBldhAndTjh,
+  getForceChexiao,
 } from "@/api/hosp/order";
 import moment from "moment";
 import { getZhList, getlistByZhId } from "@/api/system/package";
@@ -1520,26 +1639,22 @@
   queryCompany,
   addbatch,
 } from "@/api/team/tuanti";
-import { createLogger } from "vuex";
 export default {
   components: {
     ViewPdf,
   },
-  dicts: ["dict_pay_type", "dict_team"],
+  dicts: ["dict_pay_type", "dict_team", "reservation_pay_type"],
   name: "Order",
   data() {
     return {
       ztList: [
-        {name:'鏈',id: 0},{name:'鍦ㄦ',id: 1},{name:'宸插畬鎴�',id: 2},{name:'宸插鏍�',id: 3},{name:'鐢熸垚鎶ュ憡',id: 4},{name:'鎶ュ憡鏍告敹',id: 5},{name:'宸插嚭鎶ュ憡',id: 6},
-      ],
-      timelineData: [
-        { timestamp: '2024-01-01', title: '鏈', description: 'This is event 1 description' },
-        { timestamp: '2024-01-05', title: '鍦ㄦ', description: 'This is event 2 description' },
-        { timestamp: '2024-01-10', title: '宸插畬鎴�', description: 'This is event 3 description' },
-        { timestamp: '2024-01-15', title: '宸插鏍�', description: 'This is event 4 description' },
-        { timestamp: '2024-01-15', title: '鐢熸垚鎶ュ憡', description: 'This is event 4 description' },
-        { timestamp: '2024-01-15', title: '鎶ュ憡鏍告敹', description: 'This is event 4 description' },
-        { timestamp: '2024-01-15', title: '宸插嚭鎶ュ憡', description: 'This is event 4 description' },
+        { name: "鏈", id: 0 },
+        { name: "鍦ㄦ", id: 1 },
+        { name: "宸插畬鎴�", id: 2 },
+        { name: "宸插鏍�", id: 3 },
+        { name: "鐢熸垚鎶ュ憡", id: 4 },
+        { name: "鎶ュ憡鏍告敹", id: 5 },
+        { name: "宸插嚭鎶ュ憡", id: 6 },
       ],
       DataList3: [],
       bldhid: "",
@@ -1571,6 +1686,7 @@
       packagedataList: [],
       cusId: "",
       payType: "0",
+      jsType: "0",
       packageList: [],
       checkedkeys: [],
       dialogVisible: false,
@@ -1596,7 +1712,7 @@
       TreedataList: [],
       discount: 10,
       DataList: [],
-      tjNUms: [],
+      shijianlist: [],
       // 濂楅鎻愪氦鎸夐挳
       confirm: false,
       list1: true,
@@ -1644,8 +1760,8 @@
         bgbeginTime: null,
         bgendTime: null,
         xmmc: null,
-        tjCompName:'',
-        dw:null
+        tjCompName: "",
+        dw: null,
       },
       startTime: "",
       startTime1: "",
@@ -1708,6 +1824,12 @@
     });
   },
   methods: {
+    findNameByTjnum(tjnum) {
+      const order = this.orderList.find(
+        (orderItem) => orderItem.tjNumber === tjnum
+      );
+      return order ? order.tjCustomerName : "鏈壘鍒�"; // 濡傛灉鎵句笉鍒板搴旂殑椤癸紝杩斿洖涓�涓粯璁ゅ��
+    },
     // 鎼滅储
     getRemoteData(query) {
       if (query) {
@@ -1724,8 +1846,7 @@
     searchSelect(val) {
       this.CheckBox = val;
       this.queryParams.dw = this.CheckBox.cnName;
-      console.log(this.CheckBox,9999);
-      
+      console.log(this.CheckBox, 9999);
     },
     onPayTypeChange() {
       if (this.payType === "6" && this.form.tjType !== 3) {
@@ -1825,11 +1946,10 @@
         this.total = response.data.total;
         this.loading = false;
       });
-       // 鑾峰彇鍗曚綅淇℃伅闆嗗悎
-       getCompany(this.queryParams).then((response) => {
+      // 鑾峰彇鍗曚綅淇℃伅闆嗗悎
+      getCompany(this.queryParams).then((response) => {
         this.CompanyList = response.data;
-        console.log( this.CompanyList,555);
-        
+
         this.loading = false;
       });
     },
@@ -1923,6 +2043,45 @@
         .catch(() => {
           this.$message.error("鏃犳硶鑾峰彇鐢ㄦ埛淇℃伅锛�");
         });
+    },
+
+    // 寮哄埗鎾ら攢鎸夐挳
+    ForceChexiao() {
+      const tjNum = this.tjnumbers;
+      this.$confirm(
+        "鎮ㄦ槸鍚﹂渶瑕佸己鍒舵挙閿�锛熸挙閿�鍚庤浜哄憳鏈浣撴璁板綍涓嶅彲鎭㈠锛�",
+        "纭淇℃伅",
+        {
+          distinguishCancelAndClose: true,
+          confirmButtonText: "纭",
+          cancelButtonText: "鍙栨秷",
+          customClass: "custom-message-box",
+        }
+      )
+
+        .then(() => {
+          getForceChexiao(tjNum).then((res) => {
+            this.$modal.msgSuccess("鎾ら攢鎴愬姛");
+            this.getList();
+          });
+        })
+        .catch((action) => {
+          if (action === "cancel") {
+            this.$message({
+              type: "warning",
+              message: "宸插彇娑�",
+            });
+          }
+        });
+      this.$nextTick(() => {
+        // 纭繚寮规娓叉煋鍚庡簲鐢ㄦ牱寮�
+        const messageBox = document.querySelector(
+          ".custom-message-box .el-message-box__message"
+        );
+        if (messageBox) {
+          messageBox.style.color = "red"; // 閫氳繃 JS 寮哄埗璁剧疆棰滆壊
+        }
+      });
     },
 
     handleRevoke() {
@@ -2027,7 +2186,7 @@
         djendTime: null,
         bgbeginTime: null,
         bgendTime: null,
-        dw: null
+        dw: null,
       };
       this.resetForm("form");
     },
@@ -2104,14 +2263,14 @@
         bgbeginTime: null,
         bgendTime: null,
         xmmc: null,
-        tjCompName:'',
-        dw:null
-      }
+        tjCompName: "",
+        dw: null,
+      };
       this.handleQuery();
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.tjNUms = selection.map(item => item.tjNumber);
+      let tjNUms = selection.map((item) => item.tjNumber);
       selection.forEach((item) => {
         this.orderIds = item.orderId;
         this.tjnumbers = item.tjNumber;
@@ -2127,11 +2286,13 @@
       this.ids = selection.map((item) => item.orderId);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
-      shijianzhou({
-        tjNUms: this.tjNUms
-      }).then((res) => {
-        console.log(res)
-      })
+      if (tjNUms.length > 0) {
+        shijianzhou(tjNUms).then((res) => {
+          this.shijianlist = res.data;
+        });
+      } else {
+        this.shijianlist = [];
+      }
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
     // handleAdd() {
@@ -2153,7 +2314,7 @@
         var discount = "";
         response.data.water.forEach((item) => {
           copeWith += item.copeWith;
-          paidIn += item.copeWith;
+          paidIn += item.paidIn;
           discount = item.discount;
         });
         this.bill.push({
@@ -2194,7 +2355,7 @@
         var discount = "";
         response.data.water.forEach((item) => {
           copeWith += item.copeWith;
-          paidIn += item.copeWith;
+          paidIn += item.paidIn;
           discount = item.discount;
         });
         this.bill.push({
@@ -2305,8 +2466,10 @@
         let datas = {
           zhId: data.id,
         };
+        
         getlistByZhId(datas).then((res) => {
           this.packagedataList = res.data.tjProjectList;
+          
           for (var i = 0; i < this.packagedataList.length; i++) {
             let proId = this.packagedataList[i].proId;
             getProSonDxList(proId).then((res) => {
@@ -2458,7 +2621,6 @@
             this.checkedListkey.push(item.proId);
             this.DataList.push(item);
             this.DataList3 = this.DataList.concat(this.Datalists);
-            console.log(this.DataList, 77777);
             this.spliceData();
             this.DataList.forEach((item1) => {
               if (item1.proParentId == data.proId) {
@@ -2469,7 +2631,8 @@
           this.TotalPrice1 = 0;
           if (this.DataList3.length != 0) {
             this.DataList3.forEach((item) => {
-              this.TotalPrice1 += item.proPrice;
+              
+              this.TotalPrice1 += item.proPrice * item.sl;
             });
           }
           // this.TotalPrice1 = 0;
@@ -2513,7 +2676,9 @@
             this.DataList.splice(index, 1);
             this.TotalPrice1 = 0;
             this.DataList.forEach((item1) => {
+                          
               this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
+              
             });
             if (this.marryalls != 0) {
               this.TotalPrice1 += this.marryalls;
@@ -2522,7 +2687,6 @@
         });
       } else if (checked == true) {
         this.DataList.push(data);
-        console.log(this.DataList, 6666);
         this.DataList.forEach((item1) => {
           if (item1.proParentId == this.dataObj.proId) {
             item1.propinName = this.dataObj.proName;
@@ -2531,6 +2695,9 @@
         this.spliceData();
         this.TotalPrice1 = 0;
         this.DataList.forEach((item1) => {
+          console.log(item1.proPrice,3322);
+          console.log(this.TotalPrice1,1122);
+          
           this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
         });
         if (this.marryalls != 0) {
@@ -2736,10 +2903,12 @@
             discount,
             copeWith,
             tjType,
+            payStasus:this.jsType,
             orderId: this.orderIds,
             tjProIds: this.proIds,
             payType: this.payType,
           };
+          
           getwater(data).then((res) => {
             this.$modal.msgSuccess("鎻愪氦鎴愬姛");
             this.mobanId = res.data.mobanId;
@@ -2812,7 +2981,7 @@
   },
 };
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
 .pag {
   width: 100%;
   display: flex;
@@ -2863,6 +3032,12 @@
 // .el-dialog__body {
 //   padding: 20px;
 // }
+::v-deep .el-message-box__message {
+  color: red !important; /* 寮哄埗璁剧疆棰滆壊涓虹孩鑹� */
+}
+// .custom-message-box .el-message-box__message {
+//   color: red !important; /* 璁剧疆鏂囧瓧涓虹孩鑹� */
+// }
 .o {
   margin-top: 8px;
 }
@@ -2910,45 +3085,16 @@
   display: flex;
   flex-direction: column;
 }
-.timeline-wrapper {
-  overflow-x: auto;
-  padding: 20px;
-  width: 100%;
-}
 
-.horizontal-timeline {
+::v-deep .el-step__title.is-process {
+  color: rgb(24, 144, 255);
+}
+::v-deep .el-step__head.is-process {
+  color: rgb(24, 144, 255);
+  border-color: rgb(24, 144, 255);
+}
+.shijian {
   display: flex;
-  align-items: center;
-  justify-content: flex-start;
-  flex-wrap: nowrap;
-  padding: 20px 0;
-  width: 100%;
-}
-
-.el-timeline-item {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  margin: 0 20px;
-}
-
-.el-timeline-item .el-card {
-  width: 150px;
-  border-radius: 10px;
-}
-
-.el-timeline-item .el-timeline-item-tail {
-  display: none;
-}
-
-.el-timeline-item .el-timeline-item-dot {
-  position: absolute;
-  top: 10px;
-  left: 50%;
-  transform: translateX(-50%);
-  width: 12px;
-  height: 12px;
-  background-color: #409EFF;
-  border-radius: 50%;
+  align-items: flex-start;
 }
 </style>

--
Gitblit v1.8.0