From 1bdbc7be81b9374d7bf8587e43479ce98dfe9042 Mon Sep 17 00:00:00 2001
From: wwl <xchao828@163.com>
Date: 星期二, 12 八月 2025 09:04:54 +0800
Subject: [PATCH] ‘’

---
 src/views/hosp/hosp/index.vue |  737 ++++++++++++++++++--------------------------------------
 1 files changed, 239 insertions(+), 498 deletions(-)

diff --git a/src/views/hosp/hosp/index.vue b/src/views/hosp/hosp/index.vue
index b1afb15..a8af97f 100644
--- a/src/views/hosp/hosp/index.vue
+++ b/src/views/hosp/hosp/index.vue
@@ -1,476 +1,152 @@
 <template>
   <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="68px"
-    >
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="闄㈠尯鍚嶇О" prop="hospAreaName">
-        <el-input
-          style="width: 160px"
-          v-model="queryParams.hospAreaName"
-          placeholder="璇疯緭鍏ラ櫌鍖哄悕绉�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input style="width: 160px" v-model="queryParams.hospAreaName" placeholder="璇疯緭鍏ラ櫌鍖哄悕绉�" clearable
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <!-- <el-form-item label="鏈烘瀯ID" prop="hospid">
-        <el-input v-model="queryParams.hospid" placeholder="璇疯緭鍏ユ満鏋処D" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item> -->
       <el-form-item label="鏈烘瀯鍚嶇О" prop="hospName">
-        <el-input
-          v-model="queryParams.hospName"
-          style="width: 160px"
-          placeholder="璇疯緭鍏ユ満鏋勫悕绉�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.hospName" style="width: 160px" placeholder="璇疯緭鍏ユ満鏋勫悕绉�" clearable
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <!-- <el-form-item label="闄㈠尯缂栫爜" prop="code">
-        <el-input v-model="queryParams.code" placeholder="璇疯緭鍏ラ櫌鍖虹紪鐮�" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item> -->
-      <!-- <el-form-item label="鍖哄垝ID" prop="areaid">
-        <el-input v-model="queryParams.areaid" placeholder="璇疯緭鍏ュ尯鍒扞D" clearable @keyup.enter.native="handleQuery" style="width:180px"/>
-      </el-form-item> -->
       <el-form-item label="鍖哄垝鍚嶇О" prop="areaName">
-        <el-input
-          v-model="queryParams.areaName"
-          placeholder="璇疯緭鍏ュ尯鍒掑悕绉�"
-          clearable
-          @keyup.enter.native="handleQuery"
-          style="width: 180px"
-        />
+        <el-input v-model="queryParams.areaName" placeholder="璇疯緭鍏ュ尯鍒掑悕绉�" clearable @keyup.enter.native="handleQuery"
+          style="width: 180px" />
       </el-form-item>
       <el-form-item label="涓婚櫌鍖�" prop="mainHospArea">
-        <el-select
-          v-model="queryParams.mainHospArea"
-          placeholder="鏄惁涓婚櫌鍖�"
-          clearable
-          style="width: 110px"
-        >
-          <el-option
-            v-for="dict in dict.type.sys_yes_no"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
+        <el-select v-model="queryParams.mainHospArea" placeholder="鏄惁涓婚櫌鍖�" clearable style="width: 110px">
+          <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item label="璐熻矗浜�" prop="principal">
-        <el-input
-          v-model="queryParams.principal"
-          placeholder="璇疯緭鍏ヨ礋璐d汉"
-          clearable
-          @keyup.enter.native="handleQuery"
-          style="width: 140px"
-        />
+        <el-input v-model="queryParams.principal" placeholder="璇疯緭鍏ヨ礋璐d汉" clearable @keyup.enter.native="handleQuery"
+          style="width: 140px" />
       </el-form-item>
-      <!-- <el-form-item label="缂栧埗搴婁綅" prop="plaitBed">
-        <el-input v-model="queryParams.plaitBed" placeholder="璇疯緭鍏ョ紪鍒跺簥浣�" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item> -->
-      <!-- <el-form-item label="寮�鏀惧簥浣�" prop="openBed">
-        <el-input v-model="queryParams.openBed" placeholder="璇疯緭鍏ュ紑鏀惧簥浣�" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item> -->
-      <!-- <el-form-item label="鎺掑簭" prop="orderNum">
-        <el-input v-model="queryParams.orderNum" 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-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
       </el-form-item>
     </el-form>
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['hosp:hosp:add']"
-          >鏂板</el-button
-        >
+        <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['hosp:hosp:add']">鏂板</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['hosp:hosp:edit']"
-          >淇敼</el-button
-        >
+        <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+          v-hasPermi="['hosp:hosp:edit']">淇敼</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['hosp:hosp:remove']"
-          >鍒犻櫎</el-button
-        >
+        <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+          v-hasPermi="['hosp:hosp:remove']">鍒犻櫎</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['hosp:hosp:export']"
-          >瀵煎嚭</el-button
-        >
+        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['hosp:hosp:export']">瀵煎嚭</el-button>
       </el-col>
-      <right-toolbar
-        :showSearch.sync="showSearch"
-        @queryTable="getList"
-      ></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table
-      v-loading="loading"
-      :data="hospList"
-      @selection-change="handleSelectionChange"
-      border
-    >
+    <el-table v-loading="loading" :data="hospList" @selection-change="handleSelectionChange" border>
       <el-table-column type="selection" width="55" align="center" fixed />
-      <el-table-column
-        label="搴忓彿"
-        align="center"
-        prop="newID"
-        width="50px"
-        fixed="left"
-      />
-      <el-table-column
-        label="闄㈠尯鍚嶇О"
-        align="center"
-        prop="hospAreaName"
-        width="120px"
-        :show-overflow-tooltip="true"
-        fixed="left"
-      />
-      <!-- <el-table-column label="鍖荤枟鏈烘瀯ID" align="center" prop="hospid" /> -->
-      <!-- <el-table-column label="鍖荤枟鏈烘瀯鍚嶇О" align="center" prop="hospName" /> -->
-      <el-table-column
-        label="闄㈠尯缂栫爜"
-        align="center"
-        prop="code"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="浜旂瑪绠�鐮�"
-        align="center"
-        prop="wbm"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鎷奸煶绠�鐮�"
-        align="center"
-        prop="spell"
-        :show-overflow-tooltip="true"
-      />
-      <!-- <el-table-column label="琛屾斂鍖哄垝ID" align="center" prop="areaid" /> -->
-      <!-- <el-table-column label="琛屾斂鍖哄垝鍚嶇О" align="center" prop="areaName" /> -->
-      <el-table-column
-        label="涓婚櫌鍖�"
-        align="center"
-        prop="mainHospArea"
-        :show-overflow-tooltip="true"
-      >
+      <el-table-column label="搴忓彿" align="center" prop="newID" width="50px" fixed="left" />
+      <el-table-column label="闄㈠尯鍚嶇О" align="center" prop="hospAreaName" width="120px" :show-overflow-tooltip="true"
+        fixed="left" />
+      <el-table-column label="闄㈠尯缂栫爜" align="center" prop="code" :show-overflow-tooltip="true" />
+      <el-table-column label="浜旂瑪绠�鐮�" align="center" prop="wbm" :show-overflow-tooltip="true" />
+      <el-table-column label="鎷奸煶绠�鐮�" align="center" prop="spell" :show-overflow-tooltip="true" />
+      <el-table-column label="涓婚櫌鍖�" align="center" prop="mainHospArea" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.sys_yes_no"
-            :value="scope.row.mainHospArea"
-          />
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.mainHospArea" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="璐熻矗浜�"
-        align="center"
-        prop="principal"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="璐熻矗浜虹數璇�"
-        align="center"
-        prop="phone"
-        :show-overflow-tooltip="true"
-        width="120px"
-      />
-      <el-table-column
-        label="缂栧埗搴婁綅"
-        align="center"
-        prop="plaitBed"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="寮�鏀惧簥浣�"
-        align="center"
-        prop="openBed"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鎴愮珛鏃ユ湡"
-        align="center"
-        prop="buildDate"
-        width="120px"
-        :show-overflow-tooltip="true"
-      >
+      <el-table-column label="璐熻矗浜�" align="center" prop="principal" :show-overflow-tooltip="true" />
+      <el-table-column label="璐熻矗浜虹數璇�" align="center" prop="phone" :show-overflow-tooltip="true" width="120px" />
+      <el-table-column label="缂栧埗搴婁綅" align="center" prop="plaitBed" :show-overflow-tooltip="true" />
+      <el-table-column label="寮�鏀惧簥浣�" align="center" prop="openBed" :show-overflow-tooltip="true" />
+      <el-table-column label="鎴愮珛鏃ユ湡" align="center" prop="buildDate" width="120px" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.buildDate, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
-      <el-table-column
-        label="澶囨敞"
-        align="center"
-        prop="remark"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鎺掑簭"
-        align="center"
-        prop="orderNum"
-        width="50px"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鏁版嵁鐘舵��"
-        align="center"
-        prop="effective"
-        :show-overflow-tooltip="true"
-      >
+      <el-table-column label="澶囨敞" align="center" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column label="鎺掑簭" align="center" prop="orderNum" width="50px" :show-overflow-tooltip="true" />
+      <el-table-column label="鏁版嵁鐘舵��" align="center" prop="effective" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.dict_data_status"
-            :value="scope.row.effective"
-          />
+          <dict-tag :options="dict.type.dict_data_status" :value="scope.row.effective" />
         </template>
       </el-table-column>
-      <!-- <el-table-column label="鍒涘缓浜哄鍚�" align="center" prop="createByName" /> -->
-      <!-- <el-table-column label="淇敼浜哄鍚�" align="center" prop="updateByName" /> -->
-      <!-- <el-table-column label="鍥剧墖" align="center" prop="imgbase64" width="100">
+      <el-table-column fixed="right" label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="80px">
         <template slot-scope="scope">
-          <image-preview :src="scope.row.imgbase64" :width="50" :height="50" />
-        </template>
-      </el-table-column> -->
-      <el-table-column
-        fixed="right"
-        label="鎿嶄綔"
-        align="center"
-        class-name="small-padding fixed-width"
-        width="80px"
-      >
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['hosp:hosp:edit']"
-            title="淇敼"
-          ></el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['hosp:hosp:remove']"
-            title="鍒犻櫎"
-          ></el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['hosp:hosp:edit']" title="淇敼"></el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+            v-hasPermi="['hosp:hosp:remove']" title="鍒犻櫎"></el-button>
         </template>
       </el-table-column>
     </el-table>
 
     <div class="pag">
       <div class="pag1">
-        <pagination
-          v-show="total > 0"
-          :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
-          @pagination="getList"
-        />
+        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize" @pagination="getList" />
       </div>
     </div>
 
     <!-- 娣诲姞鎴栦慨鏀归櫌鍖轰俊鎭璇濇 -->
-    <el-dialog
-      :title="title"
-      :visible.sync="open"
-      width="1000px"
-      append-to-body
-    >
-      <el-form
-        ref="form"
-        :model="form"
-        :rules="rules"
-        label-width="100px"
-        :inline="true"
-      >
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true">
         <el-form-item label="闄㈠尯鍚嶇О" prop="hospAreaName">
           <el-input v-model="form.hospAreaName" placeholder="璇疯緭鍏ラ櫌鍖哄悕绉�" />
         </el-form-item>
         <el-form-item label="闄㈠尯缂栫爜" prop="code">
           <el-input v-model="form.code" placeholder="璇疯緭鍏ラ櫌鍖虹紪鐮�" />
         </el-form-item>
-        <el-form-item label="涓婚櫌鍖� " prop="mainHospArea">
-          <el-select
-            v-model="form.mainHospArea"
-            placeholder="璇烽�夋嫨鏄惁涓婚櫌鍖� 0-涓嶆槸 1-鏄�"
-            style="width: 130px"
-          >
-            <el-option
-              v-for="dict in dict.type.sys_yes_no"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
+        <el-form-item label="涓婚櫌鍖�" prop="mainHospArea">
+          <el-select v-model="form.mainHospArea" placeholder="璇烽�夋嫨鏄惁涓婚櫌鍖� 0-涓嶆槸 1-鏄�" style="width: 130px">
+            <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
+              :value="dict.value"></el-option>
           </el-select>
         </el-form-item>
-        <!-- <el-form-item label="鍖荤枟鏈烘瀯ID" prop="hospid">
-          <el-input v-model="form.hospid" placeholder="璇疯緭鍏ュ尰鐤楁満鏋処D" />
-        </el-form-item> -->
         <el-form-item label="鏈烘瀯鍚嶇О" prop="hospName">
-          <el-select
-            v-model="form.hospid"
-            placeholder="璇烽�夋嫨鎵�鍦ㄦ満鏋�"
-            clearable
-            style="width: 200px"
-            filterable
-          >
-            <el-option
-              v-for="dict in orgList"
-              :key="dict.orgCnName"
-              :label="dict.orgCnName"
-              :value="dict.orgId"
-            />
+          <el-select v-model="form.hospid" placeholder="璇烽�夋嫨鎵�鍦ㄦ満鏋�" clearable style="width: 200px" filterable>
+            <el-option v-for="dict in orgList" :key="dict.orgCnName" :label="dict.orgCnName" :value="dict.orgId" />
           </el-select>
         </el-form-item>
-        <!-- <el-form-item label="浜旂瑪绠�鐮�" prop="wbm">
-          <el-input v-model="form.wbm" placeholder="璇疯緭鍏ヤ簲绗旂畝鐮�" />
-        </el-form-item> -->
-        <!-- <el-form-item label="鎷奸煶绠�鐮�" prop="spell">
-          <el-input v-model="form.spell" placeholder="璇疯緭鍏ユ嫾闊崇畝鐮�" />
-        </el-form-item> -->
         <el-form-item label="鍖哄垝鍚嶇О" prop="areaid">
-          <el-select
-            style="width: 200px"
-            v-model="form.areaid"
-            placeholder="璇烽�夋嫨鍖哄垝鍚嶇О"
-            filterable
-          >
-            <el-option
-              v-for="dict in dict.type.dict_qhdm"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
+          <el-select style="width: 200px" v-model="form.areaid" placeholder="璇烽�夋嫨鍖哄垝鍚嶇О" filterable>
+            <el-option v-for="dict in dict.type.dict_qhdm" :key="dict.value" :label="dict.label" :value="dict.value" />
           </el-select>
-          <!-- <el-input v-model="form.areaid" placeholder="璇疯緭鍏ヨ鏀垮尯鍒掑悕绉�" /> -->
         </el-form-item>
         <el-form-item label="璐熻矗浜�" prop="principal">
-          <el-input
-            v-model="form.principal"
-            placeholder="璇疯緭鍏ヨ礋璐d汉"
-            style="width: 135px"
-          />
+          <el-input v-model="form.principal" placeholder="璇疯緭鍏ヨ礋璐d汉" style="width: 135px" />
         </el-form-item>
         <el-form-item label="闄㈠尯鍦板潃" prop="areaName">
-          <el-input
-            v-model="form.areaName"
-            placeholder="璇疯緭鍏ラ櫌鍖哄湴鍧�"
-            style="width: 510px"
-          />
+          <el-input v-model="form.areaName" placeholder="璇疯緭鍏ラ櫌鍖哄湴鍧�" style="width: 510px" />
         </el-form-item>
         <el-form-item label="璐熻矗浜虹數璇�" prop="phone">
-          <el-input
-            v-model="form.phone"
-            placeholder="璇疯緭鍏ヨ礋璐d汉鐢佃瘽"
-            style="width: 135px"
-          />
+          <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ礋璐d汉鐢佃瘽" style="width: 135px" />
         </el-form-item>
         <el-form-item label="鎴愮珛鏃ユ湡" prop="buildDate">
-          <el-date-picker
-            clearable
-            v-model="form.buildDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="璇烽�夋嫨鎴愮珛鏃ユ湡"
-            style="width: 200px"
-          >
+          <el-date-picker clearable v-model="form.buildDate" type="date" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨鎴愮珛鏃ユ湡"
+            style="width: 200px">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="缂栧埗搴婁綅鏁�" prop="plaitBed">
-          <el-input
-            v-model="form.plaitBed"
-            placeholder="璇疯緭鍏ョ紪鍒跺簥浣嶆暟"
-            style="width: 200px"
-          />
-          <el-form-item label="鎺掑簭" prop="orderNum">
-            <el-input
-              v-model="form.orderNum"
-              placeholder="璇疯緭鍏ユ帓搴�"
-              style="width: 145px"
-            />
-          </el-form-item>
+          <el-input v-model="form.plaitBed" placeholder="璇疯緭鍏ョ紪鍒跺簥浣嶆暟" style="width: 200px" />
         </el-form-item>
         <el-form-item label="寮�鏀惧簥浣嶆暟" prop="openBed">
-          <el-input
-            v-model="form.openBed"
-            placeholder="璇疯緭鍏ュ紑鏀惧簥浣嶆暟"
-            style="width: 200px"
-          />
+          <el-input v-model="form.openBed" placeholder="璇疯緭鍏ュ紑鏀惧簥浣嶆暟" style="width: 200px" />
         </el-form-item>
-
-        <!-- <el-form-item label="鏁版嵁鐘舵��(PT10.00.004)" prop="effective">
-          <el-select
-            v-model="form.effective"
-            placeholder="璇烽�夋嫨鏁版嵁鐘舵��(PT10.00.004)"
-          >
-            <el-option
-              v-for="dict in dict.type.dict_data_status"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item> -->
-        <!-- <el-form-item label="鍒涘缓浜哄鍚�" prop="createByName">
-          <el-input
-            v-model="form.createByName"
-            placeholder="璇疯緭鍏ュ垱寤轰汉濮撳悕"
-          />
-        </el-form-item> -->
-        <!-- <el-form-item label="淇敼浜哄鍚�" prop="updateByName">
-          <el-input
-            v-model="form.updateByName"
-            placeholder="璇疯緭鍏ヤ慨鏀逛汉濮撳悕"
-          />
-        </el-form-item> -->
-        <br />
+        <el-form-item label="鎺掑簭" prop="orderNum">
+          <el-input v-model="form.orderNum" placeholder="璇疯緭鍏ユ帓搴�" style="width: 145px" />
+        </el-form-item>
         <el-form-item label="澶囨敞" prop="remark">
-          <el-input
-            v-model="form.remark"
-            type="textarea"
-            placeholder="璇疯緭鍏ュ唴瀹�"
-            :rows="2"
-            label-width="400px"
-            style="width: 820px"
-            resize="none"
-          ></el-input>
+          <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" :rows="2" style="width: 820px" resize="none"></el-input>
+        </el-form-item>
+        <el-form-item label="鍖婚櫌绠�浠�" prop="introduction">
+          <editor v-model="form.introduction" :init="editorInit" :api-key="apiKey" style="width: 820px"></editor>
         </el-form-item>
         <el-form-item label="鍥剧墖">
           <image-upload v-model="form.imgbase64" />
@@ -485,63 +161,66 @@
 </template>
 
 <script>
-import {
-  listHosp,
-  getHosp,
-  delHosp,
-  addHosp,
-  updateHosp,
-} from "@/api/hosp/hosp";
+import { listHosp, getHosp, delHosp, addHosp, updateHosp } from "@/api/hosp/hosp";
 import { listOrg } from "@/api/hosp/org";
+import Editor from '@tinymce/tinymce-vue';
 
 export default {
   name: "Hosp",
   dicts: ["sys_yes_no", "dict_data_status", "dict_qhdm"],
+  components: { Editor },
   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('');
-      }  else if(value != undefined && value != ""){
-        return callback();
-      }else if (!patter.test(value)) {
-        return callback('');
-      }
-    }; */
     let checkPhoneNum = (rule, value, callback) => {
-      const pattern = /^1[3-9]\d{9}$/; // 姝g‘鐨勬墜鏈哄彿姝e垯
+      const pattern = /^1[3-9]\d{9}$/;
       if (!value) {
-        return callback(new Error("璇疯緭鍏ヨ礋璐d汉鐢佃瘽")); // 蹇呭~椤规牎楠�
+        return callback(new Error("璇疯緭鍏ヨ礋璐d汉鐢佃瘽"));
       }
       if (!pattern.test(value)) {
-        return callback(new Error("璇疯緭鍏ユ纭殑鎵嬫満鍙�")); // 鏍煎紡鏍¢獙
+        return callback(new Error("璇疯緭鍏ユ纭殑鎵嬫満鍙�"));
       }
-      return callback(); // 鏍¢獙閫氳繃
+      return callback();
     };
 
     return {
-      // 閬僵灞�
       loading: true,
-      // 閫変腑鏁扮粍
       ids: [],
-      // 闈炲崟涓鐢�
       single: true,
-      // 闈炲涓鐢�
       multiple: true,
-      // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
-      // 鎬绘潯鏁�
       total: 0,
-      // 闄㈠尯淇℃伅琛ㄦ牸鏁版嵁
       hospList: [],
-      // 鏈烘瀯淇℃伅琛ㄦ牸鏁版嵁
       orgList: [],
-      // 寮瑰嚭灞傛爣棰�
       title: "",
-      // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
-      // 鏌ヨ鍙傛暟
+      apiKey: '3ceaxd5ckw4te35xj38vj3p5rmmeyv0x8pq2yrr92rwdiqzp', // 鏇挎崲涓烘偍鐨� TinyMCE API 瀵嗛挜
+      editorInit: {
+        height: 200,
+        menubar: false,
+        plugins: [
+          'advlist autolink lists link image charmap',
+          'searchreplace visualblocks code fullscreen',
+          'insertdatetime media table paste wordcount'
+        ],
+        toolbar:
+          'undo redo | formatselect | bold italic underline | alignleft aligncenter alignright | bullist numlist | link image table | removeformat',
+        images_upload_handler: (blobInfo, success, failure) => {
+          const reader = new FileReader();
+          reader.onload = () => success(reader.result);
+          reader.onerror = () => failure('鍥剧墖涓婁紶澶辫触');
+          reader.readAsDataURL(blobInfo.blob());
+        },
+        content_style: 'body { font-family: Arial, sans-serif; font-size: 14px; }',
+        table_default_attributes: { border: 1 },
+        language: 'zh_CN',
+        dialog_zindex: 9999,
+        fixed_toolbar_container: true,
+        inline: false,
+        relative_urls: false,
+        remove_script_host: false,
+        convert_urls: false,
+        valid_elements: '*[*]', // 鍏佽鎵�鏈� HTML 鍏冪礌鍜屽睘鎬�
+        extended_valid_elements: 'p,div,span,b,strong,i,em,u,strike,sup,sub,table,tr,td,th,ul,ol,li,h1,h2,h3,h4,h5,h6,br,hr,img[*],a[*]', // 鎵╁睍鍏佽鐨勫厓绱�
+      },
       queryParams: {
         pageNum: 1,
         pageSize: 10,
@@ -557,58 +236,9 @@
         openBed: null,
         orderNum: null,
       },
-      // 琛ㄥ崟鍙傛暟
-      form: {},
-      // 琛ㄥ崟鏍¢獙
-      /* rules: {
-        hospAreaName: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        hospid: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
-        // hospName: [
-        //   { required: true, message: "鍖荤枟鏈烘瀯鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-        // ],
-        code: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
-        mainHospArea: [
-          {
-            required: true,
-            validator: checkPhoneNum,
-            trigger: "change",
-          },
-        ],
-        createBy: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        createTime: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        // orderNum: [
-        //   { required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" },
-        // ],
-        effective: [
-          {
-            required: true,
-            validator: checkPhoneNum,
-            trigger: "change",
-          },
-        ],
-        createByName: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        updateByName: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        areaName: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        principal: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        phone: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" }, // 浣跨敤鎵嬫満鍙锋牎楠屽櫒
-        ],
-      }, */
-
+      form: {
+        introduction: '<p>璇疯緭鍏ュ尰闄㈢畝浠�...</p>', // 榛樿鍊�
+      },
       rules: {
         hospAreaName: [
           { required: true, message: "璇疯緭鍏ラ櫌鍖哄悕绉�", trigger: "blur" },
@@ -626,6 +256,16 @@
         phone: [
           { required: true, validator: checkPhoneNum, trigger: "blur" },
         ],
+        introduction: [
+          { required: true, message: "璇疯緭鍏ュ尰闄㈢畝浠�", trigger: "blur" },
+          { validator: (rule, value, callback) => {
+              if (!value || value === '<p>璇疯緭鍏ュ尰闄㈢畝浠�...</p>') {
+                callback(new Error("鍖婚櫌绠�浠嬩笉鑳戒负绌�"));
+              } else {
+                callback();
+              }
+            }, trigger: "blur" }
+        ],
       },
     };
   },
@@ -634,7 +274,48 @@
     this.getListOrg();
   },
   methods: {
-    /** 鏌ヨ闄㈠尯淇℃伅鍒楄〃 */
+    // 妫�娴嬪瓧绗︿覆鏄惁涓烘湁鏁堢殑 Base64 缂栫爜
+    isBase64(str) {
+      if (!str || typeof str !== 'string') return false;
+      // Base64 瀛楃涓插彧鍖呭惈 A-Z, a-z, 0-9, +, /, =锛屼笖闀垮害閫氬父涓� 4 鐨勫�嶆暟
+      const base64Regex = /^[A-Za-z0-9+/=]+$/;
+      if (!base64Regex.test(str)) return false;
+      // 杩涗竴姝ラ獙璇佹槸鍚﹀彲浠ヨВ鐮�
+      try {
+        // 妫�鏌ラ暱搴︽槸鍚︿负 4 鐨勫�嶆暟锛堣�冭檻濉厖瀛楃 =锛�
+        if (str.length % 4 !== 0) return false;
+        // 灏濊瘯瑙g爜
+        const decoded = atob(str);
+        // 楠岃瘉瑙g爜鍚庢槸鍚﹀彲浠ラ噸鏂扮紪鐮佷负鍘熷瓧绗︿覆
+        return btoa(decoded) === str;
+      } catch (e) {
+        return false;
+      }
+    },
+    // 瑙g爜 Base64锛屽鐞� Unicode 瀛楃
+    decodeBase64(str) {
+      try {
+        // 鏇挎崲 URL-safe Base64 瀛楃锛堝鏋滃悗绔娇鐢ㄤ簡 URL-safe 缂栫爜锛�
+        str = str.replace(/-/g, '+').replace(/_/g, '/');
+        // 浣跨敤 atob 瑙g爜
+        const decoded = atob(str);
+        // 灏� Latin1 瀛楃涓茶浆鎹负 UTF-8
+        return decodeURIComponent(escape(decoded));
+      } catch (e) {
+        console.error("Base64 瑙g爜澶辫触:", e);
+        return null;
+      }
+    },
+    // 缂栫爜涓� Base64锛屽鐞� Unicode 瀛楃
+    encodeBase64(str) {
+      try {
+        // 灏� UTF-8 瀛楃涓茶浆鎹负 Latin1 缂栫爜
+        return btoa(unescape(encodeURIComponent(str)));
+      } catch (e) {
+        console.error("Base64 缂栫爜澶辫触:", e);
+        return null;
+      }
+    },
     getList() {
       this.loading = true;
       listHosp(this.queryParams).then((response) => {
@@ -649,18 +330,15 @@
         this.loading = false;
       });
     },
-    /** 鏌ヨ鏈烘瀯淇℃伅鍒楄〃 */
     getListOrg() {
       listOrg(this.queryParams).then((response) => {
         this.orgList = response.rows;
       });
     },
-    // 鍙栨秷鎸夐挳
     cancel() {
       this.open = false;
       this.reset();
     },
-    // 琛ㄥ崟閲嶇疆
     reset() {
       this.form = {
         hospAreaId: null,
@@ -689,53 +367,77 @@
         updateByName: null,
         imgbase64: null,
         deleted: null,
+        introduction: '<p>璇疯緭鍏ュ尰闄㈢畝浠�...</p>', // 閲嶇疆鏃舵仮澶嶉粯璁ゅ��
       };
       this.resetForm("form");
     },
-    /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.getList();
     },
-    /** 閲嶇疆鎸夐挳鎿嶄綔 */
     resetQuery() {
       this.resetForm("queryForm");
       this.handleQuery();
     },
-    // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
       this.ids = selection.map((item) => item.hospAreaId);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
-    /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
       this.reset();
       this.open = true;
       this.title = "鍒嗛櫌淇℃伅缁存姢";
     },
-    /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
       this.reset();
       const hospAreaId = row.hospAreaId || this.ids;
       getHosp(hospAreaId).then((response) => {
         this.form = response.data;
+        console.log("鍘熷 introduction:", response.data.introduction); // 璋冭瘯杈撳嚭
+        if (this.form.introduction) {
+          // 妫�娴嬫槸鍚︿负 Base64 缂栫爜
+          if (this.isBase64(this.form.introduction)) {
+            const decoded = this.decodeBase64(this.form.introduction);
+            if (decoded) {
+              this.form.introduction = decoded;
+              console.log("瑙g爜鍚庣殑 introduction:", this.form.introduction); // 璋冭瘯杈撳嚭
+            } else {
+              this.form.introduction = '<p>鏃犳硶瑙g爜鍖婚櫌绠�浠嬶紝璇锋鏌ユ暟鎹�</p>';
+            }
+          } else {
+            // 濡傛灉涓嶆槸 Base64锛屽亣璁炬槸 HTML 鎴栫函鏂囨湰锛岀洿鎺ヤ娇鐢�
+            this.form.introduction = this.form.introduction;
+          }
+        } else {
+          this.form.introduction = '<p>璇疯緭鍏ュ尰闄㈢畝浠�...</p>';
+        }
         this.open = true;
         this.title = "鍒嗛櫌淇℃伅缁存姢";
       });
     },
-    /** 鎻愪氦鎸夐挳 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          if (this.form.hospAreaId != null) {
-            updateHosp(this.form).then((response) => {
+          const formData = { ...this.form };
+          // 濡傛灉鍚庣瑕佹眰 Base64 缂栫爜
+          if (formData.introduction) {
+            const encoded = this.encodeBase64(formData.introduction);
+            if (encoded) {
+              formData.introduction = encoded;
+            } else {
+              this.$modal.msgError("鍖婚櫌绠�浠嬬紪鐮佸け璐ワ紝璇锋鏌ュ唴瀹�");
+              return;
+            }
+          }
+          if (formData.hospAreaId != null) {
+            updateHosp(formData).then((response) => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
               this.open = false;
               this.getList();
             });
           } else {
-            addHosp(this.form).then((response) => {
+            addHosp(formData).then((response) => {
               this.$modal.msgSuccess("鏂板鎴愬姛");
               this.open = false;
               this.getList();
@@ -744,7 +446,6 @@
         }
       });
     },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       const hospAreaIds = row.hospAreaId || this.ids;
       this.$modal
@@ -758,26 +459,66 @@
         })
         .catch(() => {});
     },
-    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download(
         "hosp/hosp/export",
         {
           ...this.queryParams,
         },
-        `hosp_${new Date().getList()}.xlsx`
+        `hosp_${new Date().getTime()}.xlsx`
       );
     },
   },
 };
 </script>
-<style scoped>
+
+<style lang="scss">
 .pag {
   width: 100%;
   display: flex;
   justify-content: center;
 }
+
 .pag1 {
   width: 30%;
 }
-</style>
+
+.app-container {
+  padding: 20px;
+}
+
+.el-form-item {
+  margin-bottom: 10px;
+}
+
+/* 璋冩暣 TinyMCE 缂栬緫鍣ㄦ牱寮� */
+.tox-tinymce {
+  border: 1px solid #dcdfe6;
+  border-radius: 4px;
+}
+
+/* 鎻愰珮 TinyMCE 瀛愬璇濇鐨� z-index */
+.tox-dialog-wrap {
+  z-index: 9999 !important; /* 纭繚楂樹簬 el-dialog 鐨勯粯璁� z-index */
+}
+
+/* 鎻愰珮 TinyMCE 涓嬫媺鑿滃崟鐨� z-index */
+.tox-menu {
+  z-index: 9999 !important;
+}
+
+/* 鎻愰珮 TinyMCE 宸ュ叿鏍忕殑 z-index */
+.tox-toolbar {
+  z-index: 9999 !important;
+}
+
+/* 鎻愰珮 TinyMCE 鐘舵�佹爮鐨� z-index */
+.tox-statusbar {
+  z-index: 9999 !important;
+}
+
+/* 纭繚鎵�鏈� TinyMCE 鐩稿叧鍏冪礌閮芥湁瓒冲楂樼殑 z-index */
+.tox-tinymce-aux {
+  z-index: 9999 !important;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0