diff --git a/src/resident/api/base.js b/src/api/base.js
similarity index 95%
rename from src/resident/api/base.js
rename to src/api/base.js
index 12dc11a6660b627d615f6c73e3e4a2442d0f96fa..dc9f5cb8d23217bb93b7a6074590f9156b13722a 100644
--- a/src/resident/api/base.js
+++ b/src/api/base.js
@@ -1,4 +1,4 @@
-import { fetchBase } from '@/utils/fetch.js'
+import { fetchBase } from './fetch.js'
 import { setSessionStorage, getSessionStorage } from '@/utils/common.js'
 
 // 获取字典
diff --git a/src/utils/fetch.js b/src/api/fetch.js
similarity index 100%
rename from src/utils/fetch.js
rename to src/api/fetch.js
diff --git a/src/api/screening.js b/src/api/screening.js
new file mode 100644
index 0000000000000000000000000000000000000000..43c20eb61e28b29fb221d38db564514748ce8f64
--- /dev/null
+++ b/src/api/screening.js
@@ -0,0 +1,7 @@
+import { fetchBase } from './fetch.js'
+
+// 证件号查询是否管理慢病档案
+export function queryResidentInfo(params) {
+    return fetchBase({ url: `/chronic-resident/v1/chronic-residents-record/search-info`, body: params, loading: true })
+}
+
diff --git a/src/assets/css/atomic.less b/src/assets/css/atomic.less
index 6f6df7f5593c2fd328fd614c908ab2d1124d5142..49593db487ca59f8c5f48791539728022aee48b3 100644
--- a/src/assets/css/atomic.less
+++ b/src/assets/css/atomic.less
@@ -60,6 +60,7 @@
 .grow { flex-grow: 1; }
 .shrink-0 { flex-shrink: 0; }
 .items-center { align-items: center; }
+.items-end { align-items: flex-end; }
 .justify-between { 	justify-content: space-between; }
 .justify-around { justify-content: space-around; }
 .justify-center { justify-content: center; }
@@ -80,11 +81,7 @@
 .text-12 { font-size: 12px; }
 .text-center { text-align: center; }
 .text-black { color: #000; }
-.text-green { color: #52C41A; }
-.text-red { color: #FF4D4F; }
-.text-orange { color: #FA8C16; }
-.text-gray { color: #BFBFBF; }
-.text-primary { color: var(--ant-primary-color); }
+.text-primary { color: var(--van-primary-color); }
 .font-semibold { font-weight: 600; }
 // 文字省略
 .text-ellipsis {
diff --git a/src/assets/css/base.less b/src/assets/css/base.less
index 4b554d07494288c0e1d27f5a116f23b03c55963a..5da5448387a123c6311d693802c2107b9e901ae9 100644
--- a/src/assets/css/base.less
+++ b/src/assets/css/base.less
@@ -10,7 +10,7 @@ body {
     font-family: Avenir, Helvetica, Arial, sans-serif;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
-    color: var(--text-color);
+    color: #262626;
     background-color: #fff;
     font-size: .14rem;
 
@@ -29,4 +29,24 @@ body {
 
 *, :after, :before {
     box-sizing: border-box;
+}
+
+// van组件样式调整
+// 表单
+.screen-form {
+    .van-cell:after {
+        transform: scaleY(1);
+    }
+    >.van-field:last-child {
+        &::before {
+            position: absolute;
+            box-sizing: border-box;
+            content: " ";
+            pointer-events: none;
+            right: var(--van-padding-md);
+            bottom: 0;
+            left: var(--van-padding-md);
+            border-bottom: 1px solid var(--van-cell-border-color);
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/assets/icons/doc-check-circle.svg b/src/assets/icons/doc-check-circle.svg
deleted file mode 100644
index 64c1f4e42a6e42136944eac8db3a9cd5b5ff6ec4..0000000000000000000000000000000000000000
--- a/src/assets/icons/doc-check-circle.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M7.50001 13.6666C3.81801 13.6666 0.833344 10.682 0.833344 6.99998C0.833344 3.31798 3.81801 0.333313 7.50001 0.333313C11.182 0.333313 14.1667 3.31798 14.1667 6.99998C14.1667 10.682 11.182 13.6666 7.50001 13.6666ZM6.83534 9.66665L11.5487 4.95265L10.606 4.00998L6.83534 7.78131L4.94934 5.89531L4.00668 6.83798L6.83534 9.66665Z" fill="#1890FF"/>
-</svg>
diff --git a/src/assets/icons/doc-exclamation-circle.svg b/src/assets/icons/doc-exclamation-circle.svg
deleted file mode 100644
index 130a8f4c088bc29f20db7b93abaaf8395d6336da..0000000000000000000000000000000000000000
--- a/src/assets/icons/doc-exclamation-circle.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M7.42523 13.6666C3.77764 13.6666 0.820869 10.682 0.820869 6.99998C0.820869 3.31798 3.77764 0.333313 7.42523 0.333313C11.0728 0.333313 14.0296 3.31798 14.0296 6.99998C14.0296 10.682 11.0728 13.6666 7.42523 13.6666ZM7.42523 12.3333C8.8265 12.3333 10.1704 11.7714 11.1612 10.7712C12.1521 9.77102 12.7087 8.41447 12.7087 6.99998C12.7087 5.58549 12.1521 4.22894 11.1612 3.22874C10.1704 2.22855 8.8265 1.66665 7.42523 1.66665C6.02396 1.66665 4.68009 2.22855 3.68924 3.22874C2.69839 4.22894 2.14174 5.58549 2.14174 6.99998C2.14174 8.41447 2.69839 9.77102 3.68924 10.7712C4.68009 11.7714 6.02396 12.3333 7.42523 12.3333ZM6.76479 3.66665H8.08567V4.99998H6.76479V3.66665ZM6.76479 6.33331H8.08567V10.3333H6.76479V6.33331Z" fill="#768092"/>
-</svg>
diff --git a/src/assets/icons/doc-left.svg b/src/assets/icons/doc-left.svg
deleted file mode 100644
index dfc5ee5538a04aeffd9ba365f4bc9b91b641f785..0000000000000000000000000000000000000000
--- a/src/assets/icons/doc-left.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg width="9" height="18" viewBox="0 0 9 18" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M9 16.4375L7.95453 17.5L0.280918 9.70137C-0.10202 9.31219 -0.102019 8.68781 0.280918 8.29863L7.95453 0.5L9 1.5625L1.68173 9L9 16.4375Z" fill-opacity="0.9"/>
-</svg>
diff --git a/src/assets/icons/resident/doc-check-circle.svg b/src/assets/icons/resident/doc-check-circle.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e32b97cc9dfbe1f1f32c6b65e430dbe87e314d3e
--- /dev/null
+++ b/src/assets/icons/resident/doc-check-circle.svg
@@ -0,0 +1,11 @@
+<svg width="46" height="47" viewBox="0 0 46 47" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_4094_6067)">
+<path d="M23 0.0561523C10.12 0.0561523 0 10.1762 0 23.0562C0 35.9362 10.12 46.0562 23 46.0562C35.88 46.0562 46 35.9362 46 23.0562C46 10.1762 35.88 0.0561523 23 0.0561523Z" fill="#52C41A"/>
+<path d="M12.9863 22.1465L20.628 29.9338L34.4558 16.1787" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="clip0_4094_6067">
+<rect width="46" height="46" fill="white" transform="translate(0 0.0561523)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/src/assets/icons/resident/doc-info-circle.svg b/src/assets/icons/resident/doc-info-circle.svg
new file mode 100644
index 0000000000000000000000000000000000000000..883f1555c5c94254973df2c15c73e5931f21a8d5
--- /dev/null
+++ b/src/assets/icons/resident/doc-info-circle.svg
@@ -0,0 +1,12 @@
+<svg width="46" height="47" viewBox="0 0 46 47" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_4129_3891)">
+<path d="M23 0.0561523C10.12 0.0561523 0 10.1762 0 23.0562C0 35.9362 10.12 46.0562 23 46.0562C35.88 46.0562 46 35.9362 46 23.0562C46 10.1762 35.88 0.0561523 23 0.0561523Z" fill="#FAAD14"/>
+<path d="M23 10.1626L23 24.2882" stroke="white" stroke-width="4" stroke-linecap="round"/>
+<circle cx="23" cy="33.1787" r="3" transform="rotate(180 23 33.1787)" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_4129_3891">
+<rect width="46" height="46" fill="white" transform="translate(0 0.0561523)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/src/assets/icons/resident/doc-scan.svg b/src/assets/icons/resident/doc-scan.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c4bd7251d46177b53340fde9680e312c89823200
--- /dev/null
+++ b/src/assets/icons/resident/doc-scan.svg
@@ -0,0 +1,4 @@
+<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.263672" y="0.381104" width="20" height="20" rx="2" fill="#54CCBD"/>
+<path d="M17.7637 13.7144V17.8811H2.76367V13.7144H4.43034V16.2144H16.097V13.7144H17.7637ZM2.76367 9.54777H17.7637V11.2144H2.76367V9.54777ZM17.7637 7.04777H16.097V4.54777H4.43034V7.04777H2.76367V2.8811H17.7637V7.04777Z" fill="white"/>
+</svg>
diff --git a/src/assets/image/resident/code.png b/src/assets/image/resident/code.png
new file mode 100644
index 0000000000000000000000000000000000000000..54fb0c5b27b725f62f9eef5b8d42501462a63920
Binary files /dev/null and b/src/assets/image/resident/code.png differ
diff --git a/src/components/docAddress/DocAddress.vue b/src/components/docAddress/DocAddress.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9aa0d8933f5158afb7f90b0378194ca8f3e780ba
--- /dev/null
+++ b/src/components/docAddress/DocAddress.vue
@@ -0,0 +1,122 @@
+<template>
+    <van-cascader class="address-select"
+        :closeable="false"
+        v-model="innerValue"
+        title="请选择所在地区"
+        :options="areaData"
+        @change="onChange"
+        @close="() => $emit('close')"
+    />
+</template>
+
+<script>
+import { getAreaChild } from '@/api/base.js'
+import { fetchDataHandle } from '@/utils/common.js'
+
+export default {
+    name: 'DocAddress',
+    props: {
+        value: [String, Number],
+        viewData: Array,
+    },
+    emits: ['update:value', 'change', 'close'],
+    data() {
+        return {
+            innerValue: '',
+            areaData: []
+        }
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        async init() {
+            if (!this.areaData.length) {
+                const res = await getAreaChild('0')
+                this.areaData = this.dataField(res || [])
+            }
+            if (this.value) {
+                const temp = fetchDataHandle({ value: this.value }, {
+                    value: 'addToArr'
+                })
+                await this.viewHandle(temp.value)
+            }
+            // console.log(this.areaData)
+        },
+        loadData(options) {
+            const targetOption = options[options.length - 1]
+            targetOption.loading = true
+            getAreaChild(targetOption.value).then(res => {
+                targetOption.children = this.dataField(res || [], options.length === 4)
+                this.areaData = [...this.areaData]
+            }).finally(() => {
+                targetOption.loading = false
+            })
+        },
+        dataField(data, last = false) {
+            return data.map(e => {
+                return {
+                    text: e.areaName,
+                    value: e.areaCode,
+                    id: e.id,
+                    isLeaf: last
+                }
+            })
+        },
+        // 回显处理
+        async viewHandle(val = []) {
+            try {
+                const length = val.length
+                let current = this.areaData.find(e => e.value === val[0])
+                let index = 1
+                while (index < length) {
+                    const res = await getAreaChild(current.value)
+                    const result = res || []
+                    if (!result.length) break
+                    current.children = this.dataField(result, index === 4)
+                    current = current.children.find(e => e.value === val[index])
+                    this.areaData = [...this.areaData]
+                    if (!current) break
+                    index++
+                }
+            } catch(err) {
+                console.warn(err)
+            }
+            
+        },
+        onChange(val) {
+            // console.log(val, this.areaData)
+            const tabIndex = val.tabIndex
+            const options = val.selectedOptions
+            const targetOption = options[options.length - 1]
+            if (tabIndex < 4 ) {
+                getAreaChild(val.value).then(res => {
+                    targetOption.children = this.dataField(res || [], options.length === 4)
+                    this.areaData = [...this.areaData]
+                })
+            }
+            this.$emit('update:value', val.value)
+            this.$emit('change', val)
+            if (tabIndex === 4 ) {
+                this.$emit('close')
+            }
+        }
+    },
+    watch: {
+        value: {
+            handler(val) {
+                this.innerValue = val
+            },
+            immediate: true
+        },
+        // 地址同步使用
+        viewData(val) {
+            this.viewHandle(val)
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/resident/Resident.vue b/src/resident/Resident.vue
index eb5b26b80b57aa0d59483150a4611f0183de59a9..221b43a9eaeaba712c5e7fd0559b7c4fb7f7b472 100644
--- a/src/resident/Resident.vue
+++ b/src/resident/Resident.vue
@@ -1,24 +1,36 @@
 <template>
-    <div class="h-full resident-home">
-        <router-view v-slot="{ Component }">
-            <Transition name="route" mode="out-in">
-                <component :is="Component" v-if="visible"/>
-            </Transition>
-        </router-view>
-    </div>
+    <van-config-provider :theme-vars="themeVars">
+        <div class="h-full resident-home">
+            <router-view v-slot="{ Component }">
+                <Transition name="route" mode="out-in">
+                    <component :is="Component" v-if="visible"/>
+                </Transition>
+            </router-view>
+        </div>
+    </van-config-provider>
 </template>
 
 <script>
-import { getDict } from './api/base.js'
+import { getDict } from '@/api/base.js'
 import { useStore } from './store/index.js'
 
 export default {
     data() {
         return {
-            visible: false
+            visible: false,
+            themeVars: {
+                primaryColor: '#54CCBD',
+                buttonPrimaryBackground: '#54CCBD',
+                buttonPrimaryBorderColor: '#54CCBD',
+                buttonDefaultBorderColor: '#BFBFBF',
+                buttonNormalFontSize: '16px',
+                // 表单相关
+                cellVerticalPadding: '15px',
+                cellTextColor: '#262626',
+                cellBorderColor: '#d9d9d9'
+            }
         }
-    },
-    setup() {
+    },     setup() {
         const store = useStore()
         return { store }
     },
diff --git a/src/resident/screening/first/form/BaseInfo.vue b/src/resident/screening/first/form/BaseInfo.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1f81b2a761ab3030c17fbb9f289498cb706af483
--- /dev/null
+++ b/src/resident/screening/first/form/BaseInfo.vue
@@ -0,0 +1,300 @@
+<template>
+    <div class="base-info">
+        <div class="flex py-4"
+            style="border-bottom: 1px solid var(--van-cell-border-color);">
+            <div class="px-4 title">居民信息</div>
+            <div class="text-12">请准确填写您的证件信息,标*内容为必填</div>
+        </div>
+        <van-form label-width="5em" ref="form" input-align="right">
+            <van-field v-model="form.residentName"
+                required
+                center
+                clearable
+                name="residentName"  
+                label="姓名"
+                placeholder="请输入"
+                :rules="rules.residentName"
+            >
+            </van-field>
+            <van-field required
+                v-model="form.genderTrans"
+                is-link
+                readonly
+                name="gender"
+                label="性别"
+                placeholder="请选择"
+                :rules="rules.gender"
+                @click="showGender = true"/>
+            <van-popup v-model:show="showGender" position="bottom">
+                <van-picker
+                    :columns-field-names="{ text: 'name', value: 'value' }"
+                    :columns="store.getDict('DC00005')"
+                    @confirm="genderConfirm"
+                    @cancel="showGender = false"
+                />
+            </van-popup>
+            <van-field required
+                v-model="form.dataBirth"
+                is-link
+                readonly
+                name="dataBirth"
+                label="出生日期"
+                placeholder="请选择"
+                @click="showPicker = true"
+            />
+            <van-popup v-model:show="showBirth" position="bottom">
+                <van-date-picker @confirm="dataBirthConfirm" @cancel="showPicker = false" />
+            </van-popup>
+
+            <van-field v-model="form.age"
+                name="age" required 
+                label="年龄"
+                type="digit"
+                placeholder="请输入年龄"
+                maxlength="10"
+                :rules="rules.age"
+            />
+
+            <van-field required
+                v-model="form.nationalTrans"
+                is-link
+                readonly
+                name="national"
+                label="民族"
+                placeholder="请选择"
+                :rules="rules.national"
+                @click="showNational = true"/>
+            <van-popup v-model:show="showNational" position="bottom">
+                <van-picker
+                    :columns-field-names="{ text: 'name', value: 'value' }"
+                    :columns="store.getDict('DC00006')"
+                    @confirm="nationalConfirm"
+                    @cancel="showNational = false"
+                />
+            </van-popup>
+
+            <van-field v-model="form.telephone"
+                name="telephone" required
+                type="tel"
+                label="本人电话"
+                placeholder="请输入"
+                maxlength="11"
+                :rules="rules.telephone"
+            />
+
+            <van-field required
+                v-model="form.presentCodeTrans"
+                name="presentCode"
+                is-link
+                readonly
+                label="现住址"
+                placeholder="请选择所在地区"
+                @click="showPresent = true"
+            />
+            <van-popup v-model:show="showPresent" :close-on-click-overlay="false" round position="bottom">
+                <DocAddress v-model:value="form.presentCode" @close="showPresent = false"
+                    @change="presentChange"/>
+            </van-popup>
+
+            <van-field v-model="form.nowAddress"
+                name="nowAddress" 
+                label="详细地址"
+                placeholder="请输入"
+                maxlength="50"
+            />
+
+            <van-field required
+                v-model="form.registeredCodeTrans"
+                name="registeredCode"
+                is-link
+                readonly
+                label="户口地址"
+                placeholder="请选择所在地区"
+                :rules="rules.registeredCode"
+                @click="showRegistered = true"
+            />
+            <van-popup v-model:show="showRegistered" :close-on-click-overlay="false" round position="bottom">
+                <DocAddress v-model:value="form.registeredCode" @close="showRegistered = false"
+                    :viewData="addressRecord"
+                    @change="registeredChange"/>
+            </van-popup>
+
+            <van-field v-model="form.permanentAddress"
+                name="permanentAddress" 
+                label="详细地址"
+                placeholder="请输入"
+                maxlength="50"
+            >
+                <template #button>
+                    <van-button size="small" plain type="primary"
+                        @click="setRegisteredAddress">同步住址</van-button>
+                </template>
+            </van-field>
+
+        </van-form>
+
+        <div class="px-4 pb-4 grow flex flex-col justify-end">
+            <van-button type="primary" block 
+                @click="submit">下一步</van-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import { useStore } from '@/resident/store/index.js'
+import { mobileValidator, addressValidator } from '@/utils/commonReg.js'
+import DocAddress from '@/components/docAddress/DocAddress.vue'
+
+const defaultForm = () => {
+    const form = {
+        id: undefined,
+        residentInfoId:undefined,
+        // 年龄
+        currentAge: undefined,
+        // 出生地详细地址
+        birthAddress: undefined,
+        // 出生地编码
+        birthCode: undefined,
+        // 证件类型,[DC00004]
+        certificateType: 1,
+        // 联系人姓名
+        contactName: undefined,
+        contactName2: undefined,
+        // 联系人电话
+        contactPhone: undefined,
+        // 与居民关系,[DC00023]
+        contactRelation: undefined,
+        // 创建单位id
+        createdUnitId: undefined,
+        createdUnitName: undefined,
+        // 创建医生
+        createdUserName: undefined,
+        // 出生日期
+        dataBirth: undefined,
+        // 职业,[DC00010]
+        duty: undefined,
+        // 文化程度(学历),[DC00007]
+        education: undefined,
+        // 性别,[DC00005]
+        gender: undefined,
+        // 身份证号
+        idCard: undefined,
+        // innerMarital: undefined,
+        // 民族,[DC00006]
+        national: undefined,
+        // 现住址
+        nowAddress: undefined,
+        // 户籍地址
+        permanentAddress: undefined,
+        // 现住址编码
+        presentCode: undefined,
+        // 户籍地编码
+        registeredCode: undefined,
+        // 居民档案id
+        residentId: undefined,
+        // 姓名
+        residentName: undefined,
+        // 本人电话
+        telephone: undefined,
+        // 工作单位
+        workUnit: undefined,
+        diseaseId: undefined,
+        // 与居民关系
+        relation: undefined,
+        relationOther: undefined,
+        // 人群
+        chronicTagsArray: undefined,
+    }
+    return form
+}
+
+export default {
+    components: {
+        DocAddress
+    },
+    inject: ['checkInfo'],
+    data() {
+        return {
+            form: defaultForm(),
+            rules: {
+                residentName: [{ required: true, message: '请输入' }],
+                age: [{ required: true, message: '请输入' }],
+                gender: [{ required: true, message: '请选择' }],
+                national: [{ required: true, message: '请选择' }],
+                telephone: [{ required: true, message: '请输入' }, mobileValidator],
+                presentCode: [{ required: true, message: '请选择' }, addressValidator],
+                registeredCode: [{ required: true, message: '请选择' }, addressValidator]
+            },
+            // 地址同步使用
+            addressRecord: [],
+            // 性别选择
+            showGender: false,
+            // 出生日期
+            showBirth: false,
+            // 民族
+            showNational: false,
+            // 现住址
+            showPresent: false,
+            // 户籍地址
+            showRegistered: false
+        }
+    },
+    setup() {
+        const store = useStore()
+        return { store }
+    },
+    computed: {
+        residentsRecord() {
+            return this.checkInfo.residentsRecord
+        }
+    },
+    methods: {
+        submit() {
+
+        },
+        // 性别
+        genderConfirm({ selectedValues, selectedOptions  }) {
+            this.form.gender = selectedValues[0]
+            this.form.genderTrans = selectedOptions[0].name
+            this.showGender = false
+        },
+        // 出生日期
+        dataBirthConfirm({ selectedValues }) {
+            this.form.dataBirth = selectedValues.join('-')
+            this.showBirth = false
+        },
+        // 民族
+        nationalConfirm({ selectedValues, selectedOptions  }) {
+            this.form.national = selectedValues[0]
+            this.form.nationalTrans = selectedOptions[0].name
+            this.showNational = false
+        },
+        // 户口地址
+        registeredChange(val) {
+            const selectedOptions = val.selectedOptions
+            this.form.registeredCodeTrans = selectedOptions.map(e => e.text).join('/')
+            if (!this.form.presentCode && selectedOptions.length >= 5) {
+                this.form.presentCode = val.value
+                this.form.presentCodeTrans = this.form.registeredCodeTrans
+            }
+        },
+        // 现住址
+        presentChange(val) {
+            const selectedOptions = val.selectedOptions
+            this.form.presentCodeTrans = selectedOptions.map(e => e.text).join('/')
+        },
+        // 同步现住址
+        setRegisteredAddress() {
+            this.$refs.form.validate(['presentCode']).then(res => {
+                this.form.registeredCode = [...this.form.presentCode]
+                this.addressRecord = [...this.form.presentCode]
+                this.form.permanentAddress = this.form.nowAddress
+            })
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/resident/screening/first/form/CheckTip.vue b/src/resident/screening/first/form/CheckTip.vue
new file mode 100644
index 0000000000000000000000000000000000000000..80fc687432bde0e38ec549e2269944ff8b67219e
--- /dev/null
+++ b/src/resident/screening/first/form/CheckTip.vue
@@ -0,0 +1,69 @@
+<template>
+    <div class="check-result text-center">
+        <div class="pt-5">
+            <doc-icon type="doc-info-circle"
+                style="color: #faad14;font-size: .46rem;"/>
+        </div>
+        <p class="mt-4">
+            {{ checkInfo.tips }}
+        </p>
+        <div class="mt-3 flex justify-center">
+            <div class="py-3 px-4 manage-info">
+                <div class="flex">
+                    <span class="shrink-0">管理机构:</span>
+                    <span class="text-wrap">{{ checkInfo.manageUnitName }}</span>
+                </div>
+                <div class="flex mt-2">
+                    <span class="shrink-0">管理日期:</span>
+                    <span class="text-wrap">{{ checkInfo.manageDate }}</span>
+                </div>
+            </div>
+        </div>
+        <div class="pt-4 mt-5" style="background: #F7F8F9;"></div>
+        <div class="flex pl-5">
+            <p>
+                提示:请遵医嘱定期前往医院复查
+            </p>
+        </div>
+
+        <div class="mt-5">
+            <img src="@/assets/image/resident/code.png" alt="" style="width: 1.85rem;">
+        </div>
+         
+        <p>
+            常按二维码,关注微信公众号
+        </p>
+        <div class="px-4 pb-4 grow flex flex-col justify-end" style="margin-top: .3rem;">
+            <van-button block round @click="onClose">
+                <span style="color: #8C8C8C">关闭</span>
+            </van-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import { isWeiXin } from '@/utils/common.js'
+
+export default {
+    inject: ['checkInfo'],
+    methods: {
+        onClose() {
+            if (isWeiXin()) {
+                // 微信中关闭页面
+                WeixinJSBridge.call('closeWindow')
+            } else {
+                window.close()
+            }
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+.manage-info {
+    color: #4D5665;
+    background-color: #F8FAFC;
+    width: 265px;
+    max-width: 320px;
+}
+</style>
diff --git a/src/resident/screening/first/form/IdCheck.vue b/src/resident/screening/first/form/IdCheck.vue
index 50f8edd74c7265604f217e0f908d356d572c87d5..396f1d6e0bf42bc68875c12f14d33321c0653589 100644
--- a/src/resident/screening/first/form/IdCheck.vue
+++ b/src/resident/screening/first/form/IdCheck.vue
@@ -1,10 +1,12 @@
 <template>
     <div class="h-full flex flex-col id-check">
-        <div class="flex py-2">
-            <div class="px-4 title">基本信息</div>
+        <div class="flex items-end py-4"
+            style="border-bottom: 1px solid var(--van-cell-border-color);">
+            <div class="px-4 font-semibold title">居民证件信息</div>
             <div class="text-12">请准确填写您的证件信息,标*内容为必填</div>
         </div>
-        <van-form label-width="5em" ref="form">
+        <van-form label-width="5em" ref="form" input-align="right"
+            class="screen-form">
             <van-field required
                 v-model="form.certificateTypeTrans"
                 is-link
@@ -19,13 +21,23 @@
                 clearable
                 name="idCard"  
                 label="证件号码"
-                placeholder="请输入"
+                placeholder="请输入证件号码"
                 :rules="rules.idCard"
             >
+            <template #right-icon>
+                <div class="flex items-center">
+                    <doc-icon type="doc-scan" style="font-size: .2rem;"/>
+                </div>
+            </template>
             </van-field>
         </van-form>
+
+        <div class="px-4 py-5">
+            <div class="text-12 tip">提示:所填写的信息只用于慢病初筛,不会用于其他用途。</div>
+        </div>
+
         <div class="px-4 pb-4 grow flex flex-col justify-end">
-            <van-button type="primary" block 
+            <van-button type="primary" block round
                 @click="submit">下一步</van-button>
         </div>
         
@@ -35,6 +47,8 @@
 <script>
 import { useStore } from '@/resident/store/index.js'
 import { idCardRule } from '@/utils/commonReg.js'
+import { queryResidentInfo } from '@/api/screening.js'
+import { showNotify } from 'vant'
 
 export default {
     data() {
@@ -50,6 +64,7 @@ export default {
             }
         }
     },
+    inject: ['checkInfo'],
     setup() {
         const store = useStore()
         return { store }
@@ -59,12 +74,33 @@ export default {
     },
     methods: {
         init() {
-            console.log(this.store, this.store.getDictValue('DC00004', this.form.certificateType))
             this.form.certificateTypeTrans = this.store.getDictValue('DC00004', this.form.certificateType)
         },
         submit() {
             this.$refs.form.validate().then(res => {
-                console.log(res, this.form)
+                console.log(res, this.form, this.checkInfo)
+                queryResidentInfo(this.form).then(res => {
+                    console.log('queryResidentInfo', res, this.$parent)
+                    const result = res.data || {}
+
+                    if (result.deathStatus === 9) {
+                        // 死亡
+                        showNotify({ type: 'warning', message: '该居民的状态为死亡' })
+                        return
+                    }
+                    this.checkInfo.residentsRecord = result.residentsRecord
+                    this.checkInfo.manageDate = result.manageDate
+                    this.checkInfo.manageUnitName = result.manageUnitName
+                    this.checkInfo.tips = result.tips
+                    this.checkInfo.idCard = this.form.idCard
+
+                    if (result.checkCode === 3) {
+                        // 已经纳入慢病管理
+                        this.$parent.onNext(2)
+                        return
+                    }
+                    this.$parent.onNext(3)
+                })
             }).catch(err => {
                 console.warn(err)
             })
@@ -75,4 +111,9 @@ export default {
 
 <style lang="less" scoped>
 @import '../../../utils/common.less';
+.tip {
+    color: #768092;
+    background-color: #F8FAFC;
+    padding: 10px 8px;
+}
 </style>
diff --git a/src/resident/screening/first/form/Index.vue b/src/resident/screening/first/form/Index.vue
index 1c380b47dcfafadeee7b7badf67c07bfd7b4ac73..782b46c7c8ded552d71c938fa92a0abe4e7e8764 100644
--- a/src/resident/screening/first/form/Index.vue
+++ b/src/resident/screening/first/form/Index.vue
@@ -1,13 +1,19 @@
 <template>
     <div class="h-full pb-5 flex flex-col ">
         <div class="p-3 text-16 text-black text-center shrink-0 top-bar">
-            <span class="back-bt" @click="onBack" v-if="setp >= 2">
+            <span class="back-bt" @click="onBack" v-if="step >= 2">
                 <doc-icon type="doc-left" />
             </span>
             <span>慢病自我初筛</span>
         </div>
         <div class="grow overflow-y-auto">
-            <IdCheck v-show="setp === 1"/>
+            <IdCheck v-show="step === 1"/>
+            <CheckTip v-if="step === 2"/>
+            <!-- 居民基础信息 -->
+            <BaseInfo v-else-if="step === 3"/>
+            <!-- 筛查表单 -->
+            <ScreenInfo v-else-if="step === 4"/>
+            
         </div>
     </div>
 </template>
@@ -15,15 +21,29 @@
 <script>
 import { showNotify } from 'vant'
 import IdCheck from './IdCheck.vue'
+import CheckTip from './CheckTip.vue'
+import BaseInfo from './BaseInfo.vue'
+import ScreenInfo from './ScreenInfo.vue'
 
 export default {
     components: {
-        IdCheck
+        IdCheck,
+        CheckTip,
+        BaseInfo,
+        ScreenInfo
     },
     data() {
         return {
             // 操作步骤
-            setp: 1,
+            step: 1,
+            setpHistory: [1],
+            // 查询信息
+            checkInfo: {}
+        }
+    },
+    provide() {
+        return {
+            checkInfo: this.checkInfo
         }
     },
     computed: {
@@ -38,21 +58,25 @@ export default {
         if (!this.doctorId) {
             showNotify({ type: 'warning', message: '未获取到医生信息', duration: 0 })
         }
-        
     },
     methods: {
+        onNext(step) {
+            this.step = step ? step : this.step + 1
+            this.setpHistory.push(this.step)
+        },
         onBack() {
-            if (this.setp === 1) return
-            this.setp--
+            if (this.step === 1) return
+            this.setpHistory.pop()
+            this.step = this.setpHistory[this.setpHistory.length - 1]
         }
     }
-}
+} 
 </script>
 
 <style lang="less" scoped>
 .top-bar {
     position: relative;
-    border-bottom: 1px solid #0000001A;
+    border-bottom: 1px solid #3C3C435C;
     .back-bt {
         position: absolute;
         left: .16rem;
diff --git a/src/resident/screening/first/form/Result.vue b/src/resident/screening/first/form/Result.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d3585c4101d8f6feb223e7ef39f229813a9bf4d5
--- /dev/null
+++ b/src/resident/screening/first/form/Result.vue
@@ -0,0 +1,15 @@
+<template>
+    <div class="submit-result">
+        筛查提交成功!
+    </div>
+</template>
+
+<script>
+export default {
+    
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/resident/screening/first/form/ScreenInfo.vue b/src/resident/screening/first/form/ScreenInfo.vue
new file mode 100644
index 0000000000000000000000000000000000000000..473d66ff7fd0f25bbc7ff619190beace7a7665fe
--- /dev/null
+++ b/src/resident/screening/first/form/ScreenInfo.vue
@@ -0,0 +1,15 @@
+<template>
+    <div class="screen-info">
+        筛查信息
+    </div>
+</template>
+
+<script>
+export default {
+    
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/utils/common.js b/src/utils/common.js
index a3151b26336a65a105fa62c5b219663e65aeeab0..8196574efc25b0715b176ebd8697209b609549f9 100644
--- a/src/utils/common.js
+++ b/src/utils/common.js
@@ -87,3 +87,9 @@ export function getInfoByIdCard(idCard) {
         age
     }
 }
+
+// 判断是否在微信中
+export function isWeiXin() {
+    const ua = window.navigator.userAgent.toLowerCase()
+    return /micromessenger/.test(ua)
+}
diff --git a/src/utils/commonReg.js b/src/utils/commonReg.js
index b947f17b1832e7a2988976507120ba62a186b404..37c35862e3b4a01f1f7b4a0b5b584725eb14e033 100644
--- a/src/utils/commonReg.js
+++ b/src/utils/commonReg.js
@@ -48,3 +48,14 @@ export const idCardRule = { validator: (value = '') => {
     }
     return '身份证号格式错误'
 } }
+
+// 5级地址校验
+export const addressValidator = { validator: (value) => {
+    if (!value || !value.length || value.length === 5) {
+        return
+    }
+    if (value.length < 5) {
+        return '请选择至第五级地址'
+    }
+    return
+}}
diff --git a/vue.config.js b/vue.config.js
index 9637479ca41c4ced0cd8ca1fb711a79a2361c473..a22ae3662f31b9cf8933b096f9b29aa0cdf5efbc 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -28,6 +28,14 @@ module.exports = defineConfig({
                 pathRewrite: {
                     '^/tumour-admin': '/tumour-admin'
                 }
+            },
+            '/chronic-resident': {
+                // target: 'http://192.168.1.7:8081',
+                target: 'https://beta-tumour.zmnyjk.com',
+                changOrigin: true,
+                pathRewrite: {
+                    '^/chronic-resident': '/chronic-resident'
+                }
             }
         },
     },