yuanmingze 2 месяцев назад
Родитель
Сommit
5e2f60b4e5

+ 32 - 9
src/pages-common/entity-selector/index.vue

@@ -103,7 +103,10 @@ import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
 
 
 import { debounce } from '@/plugins/debounce'
 import { debounce } from '@/plugins/debounce'
 
 
-import { listWmDaPharmacyByNameApi } from '@/services/modules/task/entitySelector'
+import {
+  getWmDaPharmacyByNameApi,
+  listWmDaPharmacyByNameApi,
+} from '@/services/modules/task/entitySelector'
 import type {
 import type {
   ListWmDaPharmacyByNameRequest,
   ListWmDaPharmacyByNameRequest,
   PharmacyItem,
   PharmacyItem,
@@ -259,19 +262,39 @@ const confirmAdd = () => {
     addError.value = `${entityName.value}名称不能为空`
     addError.value = `${entityName.value}名称不能为空`
     return
     return
   }
   }
-
-  uni.$emit('entity-add', {
-    alias: pageAlias.value,
-    name,
-  })
+  if (pageAlias.value === 'pharmacyName') {
+    pharmacyAddSubmit(name)
+  }
 
 
   showAddDialog.value = false
   showAddDialog.value = false
 }
 }
 
 
-onLoad((query?: PageQuery) => {
-  if (query?.alias === 'pharmacyName') {
-    pageAlias.value = query.alias
+const pharmacyAddSubmit = async (name: string) => {
+  const res = await getWmDaPharmacyByNameApi(name)
+  const eventChannel = getOpenerEventChannel()
+  if (res.data) {
+    uni.showToast({
+      title: '药店已存在',
+      icon: 'none',
+      duration: 1000,
+    })
+
+    eventChannel?.emit('pharmacyNameSelect', res.data)
+  } else {
+    uni.showToast({
+      title: '请完善信息',
+      icon: 'none',
+      duration: 1000,
+    })
+    eventChannel?.emit('pharmacyNameSelect', name)
   }
   }
+  setTimeout(() => {
+    uni.navigateBack()
+  }, 1500)
+}
+
+onLoad((query?: PageQuery) => {
+  pageAlias.value = (query?.alias as PageAlias) ?? 'pharmacyName'
 
 
   void loadList(true)
   void loadList(true)
 })
 })

+ 12 - 0
src/pages-task/task-form/composables/useTaskForm.ts

@@ -5,6 +5,8 @@ import dayjs from 'dayjs'
 import { getTaskContentConfigByTaskTypeIdApi } from '@/services/modules/task/taskFrom'
 import { getTaskContentConfigByTaskTypeIdApi } from '@/services/modules/task/taskFrom'
 import type { TaskFieldConfigItem, TaskFieldDictMap } from '@/services/modules/task/taskFrom/type'
 import type { TaskFieldConfigItem, TaskFieldDictMap } from '@/services/modules/task/taskFrom/type'
 
 
+import { useUserStore } from '@/stores/modules/user'
+
 export type FieldValue = string | number | undefined
 export type FieldValue = string | number | undefined
 
 
 /**
 /**
@@ -12,6 +14,8 @@ export type FieldValue = string | number | undefined
  */
  */
 export const TASK_DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm'
 export const TASK_DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm'
 
 
+export const HIDE_FIELD_DEPT_ID = ['1611890693', '1611890565']
+
 /**
 /**
  * 这些 taskTypeId 的 datetime 字段不自动初始化当前时间。
  * 这些 taskTypeId 的 datetime 字段不自动初始化当前时间。
  */
  */
@@ -30,6 +34,7 @@ export interface TaskFieldOption {
 
 
 export type TaskFieldConfigViewItem = Omit<TaskFieldConfigItem, 'id'> & {
 export type TaskFieldConfigViewItem = Omit<TaskFieldConfigItem, 'id'> & {
   id: string
   id: string
+  show: boolean
   options: TaskFieldOption[] | null
   options: TaskFieldOption[] | null
 }
 }
 
 
@@ -188,6 +193,7 @@ const serializeTaskFieldConfig = (
   return config.map((field) => ({
   return config.map((field) => ({
     ...field,
     ...field,
     id: String(field.id),
     id: String(field.id),
+    show: true,
     options: getFieldDictOptions(field, dict),
     options: getFieldDictOptions(field, dict),
   }))
   }))
 }
 }
@@ -204,6 +210,9 @@ const serializeTaskFieldConfig = (
  * 由页面的 beforeOpen 自行请求并覆盖 field.options。
  * 由页面的 beforeOpen 自行请求并覆盖 field.options。
  */
  */
 export const useTaskForm = () => {
 export const useTaskForm = () => {
+  const userStore = useUserStore()
+
+  const deptId = userStore.currentUserInfo?.deptId ?? ''
   const form = ref<DynamicFormState>(createEmptyFormState())
   const form = ref<DynamicFormState>(createEmptyFormState())
 
 
   const taskFieldConfigList = ref<TaskFieldConfigViewItem[]>([])
   const taskFieldConfigList = ref<TaskFieldConfigViewItem[]>([])
@@ -218,6 +227,9 @@ export const useTaskForm = () => {
     const initialDateTime = dayjs()
     const initialDateTime = dayjs()
 
 
     for (const field of config) {
     for (const field of config) {
+      if (field.taskTypeId === '18' && HIDE_FIELD_DEPT_ID.includes(deptId)) {
+        field.show = false
+      }
       formValue[field.id] = createInitialFieldValue(field, initialDateTime)
       formValue[field.id] = createInitialFieldValue(field, initialDateTime)
     }
     }
 
 

+ 9 - 4
src/pages-task/task-form/composables/useTaskSelectHandlers.ts

@@ -170,7 +170,7 @@ export const useTaskSelectHandlers = ({
       uni.navigateTo({
       uni.navigateTo({
         url: `/pages-common/entity-selector/index?alias=pharmacyName`,
         url: `/pages-common/entity-selector/index?alias=pharmacyName`,
         events: {
         events: {
-          pharmacyNameSelect: (selectedPharmacyItem: PharmacyItem) => {
+          pharmacyNameSelect: (selectedPharmacyItem: PharmacyItem | string) => {
             setPharmacyNameSelectEvent(selectedPharmacyItem)
             setPharmacyNameSelectEvent(selectedPharmacyItem)
           },
           },
         },
         },
@@ -296,9 +296,14 @@ export const useTaskSelectHandlers = ({
     return true
     return true
   }
   }
 
 
-  const setPharmacyNameSelectEvent = (selectedPharmacyItem: PharmacyItem) => {
-    console.log('setPharmacyNameSelectEvent', selectedPharmacyItem)
-
+  const setPharmacyNameSelectEvent = (selectedPharmacyItem: PharmacyItem | string) => {
+    if (typeof selectedPharmacyItem === 'string') {
+      setFieldFormValueByAlias('pharmacyName', {
+        label: selectedPharmacyItem,
+        value: selectedPharmacyItem,
+      })
+      return
+    }
     setFieldFormValueByAlias('pharmacyName', {
     setFieldFormValueByAlias('pharmacyName', {
       label: selectedPharmacyItem.pharmacyName,
       label: selectedPharmacyItem.pharmacyName,
       value: selectedPharmacyItem.pharmacyName,
       value: selectedPharmacyItem.pharmacyName,

+ 1 - 1
src/pages-task/task-form/index.vue

@@ -95,7 +95,7 @@
                 :task-field-config="item"
                 :task-field-config="item"
               />
               />
 
 
-              <template v-else-if="isLongText(item.taskFiledType)">
+              <template v-else-if="isLongText(item.taskFiledType) && item.show">
                 <view class="line" />
                 <view class="line" />
 
 
                 <LongText
                 <LongText

+ 8 - 1
src/services/modules/task/entitySelector/index.ts

@@ -1,5 +1,9 @@
 import http from '../../../index'
 import http from '../../../index'
-import type { ListWmDaPharmacyByNameRequest, ListWmDaPharmacyByNameResponse } from './type'
+import type {
+  ListWmDaPharmacyByNameRequest,
+  ListWmDaPharmacyByNameResponse,
+  PharmacyItem,
+} from './type'
 
 
 export const listWmDaPharmacyByNameApi = (params: ListWmDaPharmacyByNameRequest) => {
 export const listWmDaPharmacyByNameApi = (params: ListWmDaPharmacyByNameRequest) => {
   return http.get<ListWmDaPharmacyByNameResponse>(
   return http.get<ListWmDaPharmacyByNameResponse>(
@@ -11,3 +15,6 @@ export const listWmDaPharmacyByNameApi = (params: ListWmDaPharmacyByNameRequest)
     }
     }
   )
   )
 }
 }
+export const getWmDaPharmacyByNameApi = (name: string) => {
+  return http.get<PharmacyItem | null>(`/admin/wmdapharmacy/getWmDaPharmacyByName?name=${name}`)
+}