weieryang 1 год назад
Родитель
Сommit
1866489d72

+ 19 - 2
CMS1.0/src/base-ui/form/src/form.vue

@@ -9,11 +9,13 @@
9 9
       ref="ruleFormRef"
10 10
       :model="modelValue"
11 11
     >
12
+
12 13
       <el-row>
13
-        <template v-for="item in formItems" :key="item.label">
14
+       
15
+        <template v-for="(item, index) in formItems" :key="item.label">
14 16
           <el-col v-bind="colLayout">
15 17
             <el-form-item
16
-              v-if="!item.isHidden"
18
+              v-if="!item.isHidden && !(showArrowDown && ((index + 1) > (24 / spanNum)) && arrowDown)"
17 19
               :label="item.label"
18 20
               :style="itemStyle"
19 21
               :prop="item.field"
@@ -149,6 +151,18 @@ import type { FormInstance, FormRules } from 'element-plus'
149 151
 
150 152
 export default defineComponent({
151 153
   props: {
154
+    arrowDown: {
155
+      type: Boolean,
156
+      required: true
157
+    },
158
+    showArrowDown: {
159
+      type: Boolean,
160
+      required: true
161
+    },
162
+    spanNum: {
163
+      type: Number,
164
+      required: true
165
+    },
152 166
     modelValue: {
153 167
       type: Object,
154 168
       required: true
@@ -222,7 +236,10 @@ export default defineComponent({
222 236
       }
223 237
     }
224 238
 
239
+
240
+
225 241
     return {
242
+
226 243
       rules,
227 244
       ruleFormRef,
228 245
       handleValueChange

+ 24 - 19
CMS1.0/src/components/page-search/src/page-search.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="page-search">
3
-    <hy-form v-bind="formConfig" v-model="formData">
3
+    <hy-form v-bind="formConfig" v-model="formData" :showArrowDown="showArrowDown" :arrowDown="arrowDown" :spanNum="spanNum">
4 4
       <!-- <template #header>
5 5
         <h1 class="header">高级检索</h1>
6 6
       </template>-->
@@ -10,6 +10,8 @@
10 10
           <el-button type="primary" icon="Search" @click="handleQueryClick"
11 11
             >搜索</el-button
12 12
           >
13
+          <el-button v-if="showArrowDown && arrowDown" type="primary" link @click="changeArrowDown">展开  <el-icon><ArrowDown /></el-icon></el-button>
14
+          <el-button v-if="showArrowDown && !arrowDown" type="primary" link @click="changeArrowDown">收起  <el-icon><ArrowUp /></el-icon></el-button>
13 15
         </div>
14 16
       </template>
15 17
     </hy-form>
@@ -66,6 +68,21 @@ export default defineComponent({
66 68
       }
67 69
     })
68 70
 
71
+
72
+    let showArrowDown = ref(false)
73
+    
74
+    let spanNum = ref(6)
75
+    if (formConfig.colLayout && formConfig.colLayout.span) spanNum.value = formConfig.colLayout.span
76
+
77
+    if (formConfig.formItems.length > (24 / spanNum.value)) showArrowDown.value = true
78
+
79
+    let arrowDown = ref(true)
80
+
81
+
82
+    const changeArrowDown = () => {
83
+      arrowDown.value = !arrowDown.value 
84
+    }
85
+
69 86
     watch(
70 87
       () => props.deptId,
71 88
       (newValue) => {
@@ -111,29 +128,17 @@ export default defineComponent({
111 128
         }
112 129
       }
113 130
 
114
-      // console.log(formItems)
115
-      // console.log(formOriginData)
116
-      // for (const key in formOriginData) {
117
-      //   if (key === 'params') {
118
-      //     if (Array.isArray(formData.value.params)) {
119
-      //       const queryData = {}
120
-      //       queryData['beginTime'] = formData.value.params[0]
121
-      //       queryData['endTime'] = formData.value.params[1]
122
-      //       formData.value[`${key}`] = queryData
123
-      //     }
124
-      //     // formData.value[key]['beginTime'] = formData.value.params[0]
125
-      //     // formData.value[key]['endTime'] = formData.value.params[1]
126
-      //   }
127
-      // }
128
-      // console.log(formData.value)
129
-      // delete formData.value.params
130
-      console.log(formData, 'formData')
131
-
132 131
       emit('queryBtnClick', formData.value)
133 132
       emit('queryDataInfo', formData.value)
134 133
     }
135 134
 
135
+
136
+
136 137
     return {
138
+      spanNum,
139
+      arrowDown,
140
+      changeArrowDown,
141
+      showArrowDown,
137 142
       formConfig,
138 143
       formData,
139 144
       handleResetClick,

+ 1 - 0
CMS1.0/src/hooks/use-page-search.js

@@ -8,6 +8,7 @@ export function usePageSearch() {
8 8
     
9 9
   }
10 10
   const handleQueryClick = (queryInfo) => {
11
+    console.log(queryInfo, 'queryInfo')
11 12
     pageContentRef.value?.getPageData(queryInfo)
12 13
     return queryInfo
13 14
   }

+ 23 - 12
CMS1.0/src/views/main/patientFile/patientFileList/config/search.config.js

@@ -1,3 +1,4 @@
1
+import { nations, patientStatus, sex, patientSource } from "@/utils/commonDic.js";
1 2
 export const searchFormConfig = {
2 3
   labelWidth: '120px',
3 4
   itemStyle: {
@@ -8,26 +9,36 @@ export const searchFormConfig = {
8 9
   },
9 10
   formItems: [
10 11
     {
11
-      field: 'postCode',
12
+      field: 'name',
12 13
       type: 'input',
13
-      label: '岗位编码',
14
-      placeholder: '请输入岗位编码'
14
+      label: '患者姓名',
15
+      placeholder: '请输入患者姓名'
15 16
     },
16 17
     {
17
-      field: 'postName',
18
+      field: 'phoneNumber',
18 19
       type: 'input',
19
-      label: '岗位名称',
20
-      placeholder: '请输入岗位名称'
20
+      label: '患者手机号',
21
+      placeholder: '请输入患者手机号'
21 22
     },
22 23
     {
23
-      field: 'status',
24
+      field: 'label',
25
+      type: 'input',
26
+      label: '标签',
27
+      placeholder: '请输入标签'
28
+    },
29
+    {
30
+      field: 'sex',
31
+      type: 'select',
32
+      label: '性别',
33
+      placeholder: '请输入标签',
34
+      options: sex,
35
+    },
36
+    {
37
+      field: 'patientStatus',
24 38
       type: 'select',
25 39
       label: '状态',
26
-      placeholder: '请选择岗位状态',
27
-      options: [
28
-        { title: '启用', value: 1 },
29
-        { title: '禁用', value: 0 }
30
-      ]
40
+      placeholder: '请选择状态',
41
+      options: patientStatus,
31 42
     }
32 43
   ]
33 44
 }

+ 11 - 86
CMS1.0/src/views/main/patientFile/patientFileList/patientFileList.vue

@@ -1,89 +1,10 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <div class="page-search">
4
-      <div class="pos-icon">
5
-        <el-icon v-if="iconFlag" @click="iconHandle">
6
-          <ArrowRight />
7
-        </el-icon>
8
-        <el-icon v-if="!iconFlag" @click="iconHandle">
9
-          <ArrowDown />
10
-        </el-icon>
11
-      </div>
12
-      <div class="search-header">
13
-        <el-row :gutter="20">
14
-          <el-col :span="6">
15
-            <el-form-item label="患者姓名">
16
-              <el-input v-model="form.name" placeholder="请输入患者姓名" />
17
-            </el-form-item>
18
-          </el-col>
19
-          <el-col :span="6">
20
-            <el-form-item label="患者手机号">
21
-              <el-input v-model="form.name" placeholder="请输入患者手机号" />
22
-            </el-form-item>
23
-          </el-col>
24
-          <el-col :span="6">
25
-            <el-form-item label="计划">
26
-              <el-select v-model="form.region" placeholder="请选择计划">
27
-                <el-option label="Zone one" value="shanghai" />
28
-                <el-option label="Zone two" value="beijing" />
29
-              </el-select>
30
-            </el-form-item>
31
-          </el-col>
32
-          <el-col :span="6">
33
-            <el-button type="primary">重置</el-button>
34
-            <el-button type="primary">搜索</el-button>
35
-          </el-col>
36
-        </el-row>
37
-      </div>
38
-      <div class="serach-bottom" v-if="!iconFlag">
39
-        <el-row :gutter="20">
40
-          <el-col :span="6">
41
-            <el-form-item label="计划">
42
-              <el-select v-model="form.region" placeholder="请选择计划">
43
-                <el-option label="Zone one" value="shanghai" />
44
-                <el-option label="Zone two" value="beijing" />
45
-              </el-select>
46
-            </el-form-item>
47
-
48
-          </el-col>
49
-          <el-col :span="6">
50
-            <el-form-item label="任务时间">
51
-              <el-date-picker v-model="form.date1" type="daterange" range-separator="至" start-placeholder="开始时间"
52
-                end-placeholder="结束时间" />
53
-            </el-form-item>
54
-          </el-col>
55
-          <el-col :span="6">
56
-            <el-form-item label="要求时间">
57
-              <el-date-picker v-model="form.date2" type="daterange" range-separator="至" start-placeholder="开始时间"
58
-                end-placeholder="结束时间" />
59
-            </el-form-item>
60
-          </el-col>
61
-          <el-col :span="6">
62
-            <el-form-item label="随访方式">
63
-              <el-select v-model="form.delivery" placeholder="请选择随访方式">
64
-                <el-option label="Zone one" value="shanghai" />
65
-                <el-option label="Zone two" value="beijing" />
66
-              </el-select>
67
-            </el-form-item>
68
-          </el-col>
69
-          <el-col :span="6">
70
-            <el-form-item label="状态">
71
-              <el-select v-model="form.resource" placeholder="请选择状态">
72
-                <el-option label="Zone one" value="shanghai" />
73
-                <el-option label="Zone two" value="beijing" />
74
-              </el-select>
75
-            </el-form-item>
76
-          </el-col>
77
-        </el-row>
78
-
79
-
80
-      </div>
81
-      <div class="btn-handle">
82
-        <el-button type="primary">批量导入</el-button>
83
-        <el-button type="primary" @click="batchLabels">批量打标</el-button>
84
-        <el-button type="primary">批量取消标签</el-button>
85
-      </div>
86
-    </div>
3
+    <page-search
4
+      :searchFormConfig="searchFormConfig"
5
+      @resetBtnClick="handleResetClick"
6
+      @queryBtnClick="handleQueryClick"
7
+    />
87 8
     <page-content ref="pageContentRef" :contentTableConfig="contentTableConfig" pageName="/patient/patient"
88 9
       :isExport="false" @newBtnClick="handleNewData" @editBtnClick="handleEditData">
89 10
       <template #patientId="{ row }">
@@ -112,7 +33,7 @@
112 33
 <script>
113 34
 import { defineComponent } from 'vue'
114 35
 import { useRouter } from 'vue-router';
115
-
36
+import PageSearch from '@/components/page-search'
116 37
 import PageContent from '@/components/page-content'
117 38
 import PageModal from '@/components/page-modal'
118 39
 import { setLabel } from '@/api/patient/patient';
@@ -131,13 +52,14 @@ import { ElMessage, ElMessageBox } from 'element-plus'
131 52
 export default defineComponent({
132 53
   name: 'PatientFileList',
133 54
   components: {
55
+    PageSearch,
134 56
     PageContent,
135 57
     PageModal
136 58
   },
137 59
   setup() {
138 60
     const router = useRouter();
139 61
 
140
-    const [pageContentRef] = usePageSearch()
62
+    const [pageContentRef, handleResetClick, handleQueryClick] = usePageSearch()
141 63
     const activeNames = ref(['1'])
142 64
     const input2 = ref('')
143 65
     const iconFlag = ref(true)
@@ -240,6 +162,8 @@ export default defineComponent({
240 162
     const [pageModalRef, defaultInfo, handleNewData, handleEditData] =
241 163
       usePageModal(newCallback, editCallback)
242 164
     return {
165
+      handleQueryClick,
166
+      handleResetClick,
243 167
       batchLabels,
244 168
       statusMap: ArrayToMap(patientStatus, 'value'),
245 169
       sourceMap: ArrayToMap(patientSource, 'value'),
@@ -250,6 +174,7 @@ export default defineComponent({
250 174
       activeNames,
251 175
       form,
252 176
       iconHandle,
177
+      searchFormConfig,
253 178
       contentTableConfig,
254 179
       pageContentRef,
255 180
       modalConfigRef,