Преглед изворни кода

新增功能-医生暂不开方

cgp пре 22 часа
родитељ
комит
41ad932360
2 измењених фајлова са 78 додато и 16 уклоњено
  1. 13 0
      src/api/his/scrmPrescribe.js
  2. 65 16
      src/views/his/scrmPrescribe/index.vue

+ 13 - 0
src/api/his/scrmPrescribe.js

@@ -113,3 +113,16 @@ export function getDoctorAdvice(prescribeId) {
     method: 'get'
   })
 }
+
+/**
+ * 医生暂不开方(提交理由)
+ * @param {Object} data - { prescribeId, notPrescribeReason }
+ * @returns {Promise}
+ */
+export function doctorNotPrescribe(data) {
+  return request({
+    url: '/his/prescribeDataScrm/doctorNotPrescribe',
+    method: 'post',
+    data: data
+  })
+}

+ 65 - 16
src/views/his/scrmPrescribe/index.vue

@@ -1,4 +1,3 @@
-<!-- 医生商城处方列表页面 -->
 <template>
   <div class="app-container">
     <!-- 搜索表单 -->
@@ -66,8 +65,9 @@
       <el-table-column label="处方状态" align="center" prop="doctorConfirm" width="120">
         <template slot-scope="scope">
           <span v-if="scope.row.doctorConfirm === 0" class="warning">待开方</span>
-          <span v-else-if="scope.row.status === 0" class="success">待审核</span>
-          <span v-else-if="scope.row.status === 1" class="default">已完成</span>
+          <span v-else-if="scope.row.doctorConfirm === -2" class="primary">暂不开方</span>
+          <span v-else-if="scope.row.status === 0" class="default">待审核</span>
+          <span v-else-if="scope.row.status === 1" class="success">已完成</span>
           <span v-else-if="scope.row.status === 2" class="danger">已拒方</span>
           <span v-else>-</span>
         </template>
@@ -114,7 +114,7 @@
       <el-table-column
         label="操作"
         align="center"
-        width="320"
+        width="360"
         class-name="small-padding fixed-width"
       >
         <template slot-scope="scope">
@@ -142,7 +142,7 @@
             icon="el-icon-edit"
             @click="handlePerfectPrescription(scope.row)"
           >完善信息</el-button>
-          <!-- 开方(编辑) -->
+          <!-- 开方(编辑)recipeType:是否填写医生建议,isDocument:销售是否已制单 -->
           <el-button
             v-if="scope.row.recipeType === 1 && (scope.row.doctorConfirm === 0 || scope.row.status===1) && scope.row.isDocument===0"
             type="text"
@@ -150,6 +150,14 @@
             icon="el-icon-plus"
             @click="handleOpenPrescribe(scope.row)"
           >开方</el-button>
+          <!-- 暂不开方 -->
+          <el-button
+            v-if="scope.row.recipeType === 1 &&scope.row.doctorConfirm === 0 && scope.row.isDocument===0"
+            type="text"
+            size="mini"
+            icon="el-icon-remove-outline"
+            @click="handleNotPrescribe(scope.row)"
+          >暂不开方</el-button>
           <!-- 拒方 -->
           <el-button
             v-if="scope.row.doctorConfirm === 0 && scope.row.isDocument===0"
@@ -195,7 +203,7 @@
 </template>
 
 <script>
-import { waitOpenPrescribeList, doctorRejectPrescribe } from "@/api/his/scrmPrescribe";
+import { waitOpenPrescribeList, doctorRejectPrescribe, doctorNotPrescribe } from "@/api/his/scrmPrescribe";
 import DoctorAdviceDialog from "./DoctorAdviceDialog.vue";
 import DoctorPrescribeDialog from "./DoctorPrescribeDialog.vue";
 
@@ -218,9 +226,9 @@ export default {
         prescribeCode: null
       },
       prescribeTypeOptions: [
-        { dictLabel: "西药", dictValue: "1" },
-        { dictLabel: "中药", dictValue: "2" },
-        { dictLabel: "中药+西药", dictValue: "3" }
+        {dictLabel: "西药", dictValue: "1"},
+        {dictLabel: "中药", dictValue: "2"},
+        {dictLabel: "中药+西药", dictValue: "3"}
       ],
       dialogVisible: false,
       prescribeDialogVisible: false,
@@ -298,9 +306,33 @@ export default {
           type: 'info'
         }).then(() => {
           this.prescribeDialogVisible = true;
-        }).catch(() => {});
+        }).catch(() => {
+        });
       }
     },
+    // 暂不开方
+    handleNotPrescribe(row) {
+      this.$prompt('请输入暂不开方的原因', '暂不开方', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        inputType: 'textarea',
+        inputValidator: (value) => {
+          if (!value || !value.trim()) return '原因不能为空';
+          return true;
+        }
+      }).then(({value}) => {
+        doctorNotPrescribe({
+          prescribeId: row.prescribeId,
+          notPrescribeReason: value
+        }).then(() => {
+          this.$message.success('操作成功');
+          this.getList();
+        }).catch(error => {
+          this.$message.error(error.message || '操作失败');
+        });
+      }).catch(() => {
+      });
+    },
     // 拒方
     handleRejectPrescribe(row) {
       this.$prompt('请输入拒绝原因', '拒方确认', {
@@ -311,7 +343,7 @@ export default {
           if (!value || !value.trim()) return '拒绝原因不能为空';
           return true;
         }
-      }).then(({ value }) => {
+      }).then(({value}) => {
         doctorRejectPrescribe({
           prescribeId: row.prescribeId,
           auditReason: value
@@ -321,15 +353,32 @@ export default {
         }).catch(error => {
           this.$message.error(error.message || '拒方失败');
         });
-      }).catch(() => {});
+      }).catch(() => {
+      });
     }
   }
 };
 </script>
 
 <style scoped>
-.warning { color: #e6a23c; }
-.success { color: #67c23a; }
-.danger { color: #f56c6c; }
-.empty-text { color: #909399; font-size: 12px; }
+.warning {
+  color: #e6a23c;
+}
+
+.success {
+  color: #67c23a;
+}
+
+.danger {
+  color: #f56c6c;
+}
+
+.primary {
+  color: #409eff;
+}
+
+.empty-text {
+  color: #909399;
+  font-size: 12px;
+}
 </style>