PageSourceSearch

https://www.tigerless.com/public/v1/js/Lara_cn.js?v=1789630821

js tigerless.com collected 2026-10-09 22:15:30 UTC 32,408 bytes, 509 lines download raw bytes

1let larapopupTemplate = `
2<div class="popup_lara right-bottom-dialog">
3  <el-dialog :visible.sync="dialogVisible" :modal="mobileFlag" modal-append-to-body >
4   <div class="popup_lara_box">
5     <div class="popup_lara_right">
6        <div class="lara-header" :class="{ reverse: activeTab === 'help' }">
7            <div class="header-bg"></div>
8            <!-- 缺口形状取自设计稿的 Union 路径(Figma node 2270:19457),
9                 坐标已减去 0.5 的描边偏移,viewBox 与弹窗实宽 384 一一对应。
10                 原来是一条手写近似路径装在 800x120 的 viewBox 里再非等比拉伸,
11                 斜切角度和圆角都对不上。
12
13                 左上角故意画成直角:设计稿里那里是 32.5 的圆角,但 viewBox 宽
14                 固定 384、容器宽度却不是(移动端 393),非等比拉伸会把它变成
15                 33+ 的椭圆角,比容器的裁切弧大一圈,两条弧之间就漏出底下的
16                 紫色——表现为圆角边缘一条随 tab 换边的细锯齿。改成直角后由
17                 .el-dialog 的 border-radius + overflow:hidden 统一负责圆角,
18                 任何宽度下都不会错位。 -->
19            <svg class="curve-panel" :class="{ reverse: activeTab === 'help' }" viewBox="0 0 384 52" preserveAspectRatio="none">
20              <path
21                d="
22                  M142.51 0
23                  C156.771 0 170.505 5.393 180.955 15.097
24                  L204.726 37.17
25                  C214.991 46.702 228.482 52 242.49 52
26                  H384
27                  V52
28                  H0
29                  V0
30                  Z
31                "/>
32            </svg>
33            <div class="tab-item lara" :class="{ active: activeTab === 'lara' }" @click="changeTab('lara')">{{cn?'Lara AI':'Lara AI' }}</div>
34            <div class="tab-item contact_help" :class="{ active: activeTab === 'help' }" @click="changeTab('help')">{{cn?'联系我们':'Get Help' }}</div>
35        </div>
36        <!-- 内容区顶部的凹角:白色主体的上角是 24 圆角,紫色从缺口对侧漏出来。
37             头部高 52 且 overflow:hidden,紫色伸不到 52 以下,所以单独补这一块。 -->
38        <i class="header-corner" :class="{ left: activeTab === 'help' }"></i>
39        <div class="lara-body">
40            <!-- lara -->
41            <div v-show="tab=='lara'" id="lara-tab"></div>
42            <!-- contact -->
43            <div class="contact-form" v-show="tab=='help'">
44                <div class="container" v-show="isSend==false">
45                    <h6 class="contact-subtitle  fadeIn animated">{{cn?'欢迎您通过客服中心与虎虎保险取得联系,我们将在一个工作日内回复您':'Leave us a message, our team usually responds within a few hours' }}</h6>
46                    <div class="contact-formitem  fadeIn animated">
47                        <el-form
48                            :model="form"
49                            :rules="FormRule"
50                            ref="form">
51                            <dl class="form-dl">
52                                <el-form-item prop="email" key="email">
53                                    <dd>
54                                        <label class="form-label" :class="emailLabel?'top':''">{{ cn?'联系邮箱':'Email Address' }}</label>
55                                        <el-input
56                                            v-model="form.email"
57                                            placeholder=""
58                                            @focus="emailLabel=true"
59                                            @blur="inputBlur('email')"></el-input>
60                                    </dd>
61                                </el-form-item>
62                            </dl>
63                            <dl class="form-dl">
64                                <el-form-item prop="name" key="name">
65                                    <dd>
66                                        <label class="form-label" :class="nameLabel?'top':''">{{ cn?'姓名(英文)':'Full Name (English)' }}</label>
67                                        <el-input
68                                            v-model="form.name"
69                                            placeholder=""
70                                            @focus="nameLabel=true"
71                                            @blur="inputBlur('name')"></el-input>
72                                    </dd>
73                                </el-form-item>
74                            </dl>
75                            <dl class="form-dl">
76                                <el-form-item prop="birth" key="birth">
77                                    <dd>
78                                        <label class="form-label" :class="birthLabel?'top':''">{{ cn?'您的生日':'Date of Birth' }}</label>
79                                        <input
80                                            type="text"
81                                            name="Lbirthday"
82                                            autocomplete="off"
83                                            id="Lbirthday"
84                                            v-model="form.birth"
85                                            class="demo-input input laydate el-input__inner"
86                                            maxlength="10"
87                                            @focus="birthLabel=true"
88                                            @blur="inputBlur('birth')">
89                                        <i class="date-calendar pc_elem" id="Ldate_open"></i>
90                                        <i class="date-calendar ipad_elem" id="Ldate_open"></i>
91                                        <div id="Ldate_open" style="position: absolute; width: 0.5rem; top:0%;height: .5rem; right: 0rem; z-index: 4; cursor: pointer;" class="mobile_elem">
92                                            <i class="date-calendar" ></i>
93                                        </div>
94                                    </dd>
95                                </el-form-item>
96                            </dl>
97                            <dl class="form-dl">
98                                <el-form-item prop="school" key="school">
99                                    <dd>
100                                        <label class="form-label" :class="schoolLabel?'top':''">{{ cn?'学校与证件种类':'School & Visa Type' }}</label>
101                                        <el-input
102                                            v-model="form.school"
103                                            placeholder=""
104                                            @focus="schoolLabel=true"
105                                            @blur="inputBlur('school')"></el-input>
106                                    </dd>
107                                </el-form-item>
108                            </dl>
109                            <dl class="form-dl">
110                                <el-form-item prop="wechat" key="wechat">
111                                    <dd>
112                                        <label class="form-label" :class="wechatLabel?'top':''">{{ cn?'微信ID(选填)':'WeChat ID (Optional)' }}</label>
113                                        <el-input
114                                            v-model="form.wechat"
115                                            placeholder=""
116                                            @focus="wechatLabel=true"
117                                            @blur="inputBlur('wechat')"></el-input>
118                                    </dd>
119                                </el-form-item>
120                            </dl>
121                            <dl class="form-dl">
122                                <el-form-item prop="subject" key="subject">
123                                    <dd>
124                                        <label class="form-label" :class="subjectLabel?'top':''">{{ cn?'主题':'Subject' }}</label>
125                                        <el-input
126                                            v-model="form.subject"
127                                            placeholder=""
128                                            @focus="subjectLabel=true"
129                                            @blur="inputBlur('subject')"></el-input>
130                                    </dd>
131                                </el-form-item>
132                            </dl>
133                            <dl class="form-dl margin0">
134                                <el-form-item prop="demo" key="demo">
135                                    <dd>
136                                        <label class="form-label" :class="demoLabel?'top':''">{{ cn?'请详细阐述您的问题':'Please enter your message' }} </label>
137                                        <el-input
138                                            type="textarea"
139                                            :class="cn?'':'text_area-english'"
140                                            v-model="form.demo"
141                                            @focus="demoLabel=true"
142                                            @blur="inputBlur('demo')"></el-input>
143                                    </dd>
144                                </el-form-item>
145                            </dl>
146                            <div class="annex">
147                                <div class="annex-list" v-if="form.fileList.length>0">
148                                    <p class="annex-file" v-for="(item,index) in form.fileList">
149                                        <a href="javascript:;">{{ item.fileName }}</a>
150                                        <i class="removeFile" @click="removeFile(index)"></i>
151                                    </p>
152                                </div>
153                                <div class="annex-upload">
154                                    <el-upload
155                                        class="upload-elem"
156                                        action="/index/attachment/upload"
157                                        ref="upload"
158                                        :on-preview="handlePreview"
159                                        :on-remove="handleRemove"
160                                        :before-remove="beforeRemove"
161                                        :limit="10"
162                                        :on-exceed="handleExceed"
163                                        :on-change="fileChange"
164                                        :file-list="fileList"
165                                        :on-success="handleSuccess"
166                                        accept=".jpg,.jpeg,.png,.pdf,.JPG,.JPEG,.PDF,.doc,.docx">
167                                        <el-button size="small" type="primary"><i></i>{{ cn?'添加附件':'Attachments' }}</el-button>
168                                    </el-upload>
169                                </div>
170                            </div>
171                        </el-form>
172                    </div>
173                </div>
174                <div class="container send-result" v-show="isSend">
175                    <div><img src="/public/v1/images/send_success.svg" alt=""></div>
176                    <h6 class="send-title">{{cn?'申请已提交':'Message Sent!' }}</h6>
177                    <h6 class="send-subtitle">{{cn?'申请确认邮件已发送至下面邮箱:':'A Confirmation email has been sent to the following email address:' }}</h6>
178                    <h6 class="send-email" v-text="form.email"></h6>
179                </div>
180                <div class="bottom-btn">
181                    <div class="send" v-show="isSend==false"><a @click="submitForm" href="javascript:;" class="center-btn"><span>{{ cn?'提交':'Send Message' }}</span></a></div>
182                    <div class="send" v-show="isSend"><a @click="submitAnother" href="javascript:;" class="center-btn" style="background-color: #ffffff;color:#5A57FD"><span>{{ cn?'再次填写':'Send Another Message' }}</span></a></div>
183                    <div class="send bottom" v-show="isSend"><a @click="back" href="javascript:;" class="center-btn"><span>{{ cn?'返回首页':'Back to Home' }}</span></a></div>
184                </div>
185            </div>
186        </div>
187     </div>
188   </div>
189  </el-dialog>
190  <div id="LbirthdayDateTime" class="index-dateTime"></div>
191  <transition mode="in-out" name="fade" >
192    <loading-text v-if="loadingMaskSend" :result="result" :loading-text="cn?'提交中,请稍后':'Submitting, please wait'"></loading-text>
193  </transition>
194  <!-- 移动端关闭按钮:设计稿里它在弹窗之外(x=361 y=62,20x20,白色),
195       落在变暗的页面上。弹窗自身 overflow:hidden,装不下这个位置,
196       所以单独放在组件根部、fixed 定位。图标是设计稿导出的原始 SVG。 -->
197  <div class="lara_mobile_close" v-show="dialogVisible" @click="dialogVisible=false"
198       role="button" :aria-label="cn?'关闭':'Close'">
199    <svg viewBox="0 0 20 20" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.74408 2.74408C3.06951 2.41864 3.59715 2.41864 3.92259 2.74408L10 8.82149L16.0774 2.74408C16.4028 2.41864 16.9305 2.41864 17.2559 2.74408C17.5814 3.06951 17.5814 3.59715 17.2559 3.92259L11.1785 10L17.2558 16.0773C17.5813 16.4028 17.5813 16.9304 17.2558 17.2558C16.9304 17.5813 16.4028 17.5813 16.0773 17.2558L10 11.1785L3.92259 17.2559C3.59715 17.5814 3.06951 17.5814 2.74408 17.2559C2.41864 16.9305 2.41864 16.4028 2.74408 16.0774L8.82149 10L2.74408 3.92259C2.41864 3.59715 2.41864 3.06951 2.74408 2.74408Z" fill="white"/></svg>
200  </div>
201  <!-- 移动端入口:PC 的悬浮图标在移动端改成底部通栏按钮(Figma node 2431-37152)。
202       图标是设计稿导出的原始 SVG,外框 28x28、内部 23.466x25.598 并带
203       旋转 7.46 度 / 斜切 -3.2 度,与设计稿一致。 -->
204  <div class="lara_mobile_btn" v-show="!dialogVisible && !hideMobileBtn" @click="showpoup">
205    <span class="lara_mobile_btn_text">{{ cn ? '问 Lara,助您无忧续保' : 'How Can Lara AI Help?' }}</span>
206    <span class="lara_mobile_btn_icon" aria-hidden="true">
207      <svg viewBox="0 0 23.4661 25.5978" fill="none"><path id="Vector" d="M19.6143 20.8586C19.4303 21.2402 19.465 22.7325 19.6495 22.9433C19.9265 23.2477 20.4547 23.1813 20.5568 22.8364C20.8772 21.7777 20.0251 19.9883 19.6143 20.8586Z" fill="white"/> <path id="Vector_2" d="M4.11259 6.40834C4.02192 6.92939 4.03488 8.27644 4.04541 9.07991C4.05377 9.32797 4.26378 9.51447 4.53059 9.53482C5.30454 9.58439 5.49112 8.28215 5.03976 6.14875C4.9302 5.6183 4.23165 5.80418 4.11259 6.40834Z" fill="white"/> <path id="Vector_3" d="M7.34735 5.34776C8.56191 5.33252 9.24314 5.16199 9.24931 4.86281C9.25727 4.47636 8.24248 4.38937 6.71285 4.62044C5.06946 4.89032 5.49726 5.37098 7.34735 5.34776Z" fill="white"/> <path id="Vector_4" d="M4.09316 0.122195C3.76953 0.244434 3.78841 3.90869 4.10649 4.0584C4.9814 4.46125 5.37895 3.99531 5.29794 2.71965C5.09794 0.0624156 4.98303 -0.208049 4.09316 0.122195Z" fill="white"/> <path id="Vector_5" d="M1.20316 4.59067C0.254807 4.70228 0.0129221 4.79253 0.00754537 5.05442C-0.000903847 5.46595 2.82184 5.53036 3.4936 5.13546C4.29401 4.66415 3.07162 4.36781 1.20316 4.59067Z" fill="white"/> <path id="Vector_6" d="M19.6932 19.3559C19.9364 19.3291 20.1288 19.1608 20.1334 18.9476C20.2312 17.549 20.3051 16.6245 19.3132 16.9809C19.1229 17.0544 19.0634 17.9315 19.1918 18.8534C19.2746 19.3851 19.2878 19.3968 19.6932 19.3559Z" fill="white"/> <path id="Vector_7" d="M20.8656 19.8522C20.4246 20.0196 20.4607 20.3176 20.9389 20.3987C21.3606 20.4804 23.031 20.2478 23.3593 20.0694C23.9593 19.7258 21.7192 19.5303 20.8656 19.8522Z" fill="white"/> <path id="Vector_8" d="M18.8941 19.8121C18.4468 19.6703 18.3482 19.6717 17.6258 19.8663C16.5351 20.1644 16.9772 20.5403 18.2338 20.3754C19.1091 20.2649 19.425 19.9896 18.8941 19.8121Z" fill="white"/> <path id="Vector_9" d="M16.9464 14.2587C17.2963 13.756 17.202 13.129 16.7366 12.744C15.5797 11.7875 14.4789 10.1426 13.8535 8.43194C13.4957 7.47645 12.5795 3.63573 12.5904 3.14949C12.6042 2.53279 11.8389 2.23488 11.3416 2.66843C11.2311 2.76477 11.0863 3.18172 11.0364 3.59735C10.7322 5.68811 9.21715 10.4391 8.38593 11.8731C7.97735 12.5781 7.14932 13.2651 6.28835 13.6087C5.55038 13.9032 5.54932 13.9507 6.44162 14.6262C8.21269 15.9775 9.47955 18.6754 10.3192 22.9084C11.0739 26.704 12.5783 25.4506 12.433 24.6819C12.1278 23.1922 14.2317 18.1487 16.5828 14.7735L16.9464 14.2587ZM15.2232 13.796C13.8761 15.2843 12.402 17.6044 11.685 19.3806L11.3548 20.215L11.1959 19.4465C10.0802 14.2331 7.57967 14.0062 7.31375 13.7845C7.61792 13.5077 10.3472 11.9888 11.6702 8.55635C12.0726 7.51944 
20712.0049 7.52035 12.3489 8.48788C12.9987 10.3167 13.9271 11.798 15.0157 12.7792L15.6397 13.3398L15.2232 13.796Z" fill="white"/></svg>
208    </span>
209  </div>
210  <div class="lara_float">
211    <div class="help-bubble bottom-right-text">
212      {{ cn ? '询问Lara AI!' : 'Ask Lara AI!' }}
213    </div>
214    <div class="lara_icon_wrap">
215      <div class="bottom-right-icon" @click="showpoup">
216        <svg viewBox="31 31 37 30" aria-hidden="true"><path d="M36.9893 50.5215C36.9893 53.0012 38.9998 55.0117 41.4795 55.0117H45.7197V60H41.4795C36.2444 60 32.0001 55.7565 32 50.5215V32H36.9893V50.5215ZM56.4668 39.042C62.2529 39.042 66.9442 43.7325 66.9443 49.5186V59.9961H62.4541V58.1143C60.7568 59.2987 58.6935 59.9961 56.4668 59.9961C50.6808 59.9959 45.9902 55.3046 45.9902 49.5186C45.9904 43.7326 50.6809 39.0422 56.4668 39.042ZM56.4668 43.5322C53.1607 43.5324 50.4806 46.2124 50.4805 49.5186C50.4805 52.8248 53.1606 55.5057 56.4668 55.5059C59.7732 55.5059 62.4541 52.8249 62.4541 49.5186C62.4539 46.2123 59.7731 43.5322 56.4668 43.5322Z" fill="#fff"></path></svg>
217      </div>
218      <span class="lara_star lara_star_top_left" aria-hidden="true">
219        <svg viewBox="0 0 36 36" fill="none"><path d="M16.1766 8.18255C16.463 7.42336 17.537 7.42336 17.8234 8.18255L19.9765 13.89C20.0625 14.1179 20.2391 14.3 20.4644 14.3929L26.0269 16.6864C26.753 16.9858 26.753 18.0142 26.0269 18.3136L20.4644 20.6071C20.2391 20.7 20.0625 20.8821 19.9765 21.11L17.8234 26.8175C17.537 27.5766 16.463 27.5766 16.1766 26.8174L14.0235 21.11C13.9375 20.8821 13.7609 20.7 13.5356 20.6071L7.97311 18.3136C7.24704 18.0142 7.24704 16.9858 7.97312 16.6864L13.5356 14.3929C13.7609 14.3 13.9375 14.1179 14.0235 13.89L16.1766 8.18255Z" fill="#B7BEFF"></path></svg>
220      </span>
221      <span class="lara_star lara_star_right" aria-hidden="true">
222        <svg viewBox="0 0 36 36" fill="none"><path d="M17.3255 9.80512C17.5587 9.18112 18.4413 9.18112 18.6745 9.80512L20.4362 14.5204C20.506 14.707 20.65 14.8565 20.834 14.9331L25.4033 16.8353C25.9944 17.0814 25.9944 17.9186 25.4033 18.1647L20.834 20.0669C20.65 20.1435 20.506 20.293 20.4362 20.4796L18.6745 25.1949C18.4413 25.8189 17.5587 25.8189 17.3255 25.1949L15.5638 20.4796C15.494 20.293 15.35 20.1435 15.166 20.0669L10.5967 18.1647C10.0056 17.9186 10.0056 17.0814 10.5967 16.8353L15.166 14.9331C15.35 14.8565 15.494 14.707 15.5638 14.5204L17.3255 9.80512Z" fill="#B7BEFF"></path></svg>
223      </span>
224      <span class="lara_star lara_star_bottom_left" aria-hidden="true">
225        <svg viewBox="0 0 36 36" fill="none"><path d="M17.4745 13.4277C17.6544 12.9389 18.3456 12.9389 18.5255 13.4277L19.896 17.1508C19.9495 17.2962 20.0609 17.4129 20.2036 17.4732L23.7793 18.9842C24.2353 19.1769 24.2353 19.8231 23.7793 20.0158L20.2036 21.5268C20.0609 21.5871 19.9495 21.7038 19.896 21.8492L18.5255 25.5723C18.3456 26.0611 17.6544 26.0611 17.4745 25.5723L16.104 21.8492C16.0505 21.7038 15.9391 21.5871 15.7964 21.5268L12.2207 20.0158C11.7647 19.8231 11.7647 19.1769 12.2207 18.9842L15.7964 17.4732C15.9391 17.4129 16.0505 17.2962 16.104 17.1508L17.4745 13.4277Z" fill="#B7BEFF"></path></svg>
226      </span>
227      <span class="lara_shot lara_shot_a" aria-hidden="true">
228        <span class="lara_shot_spin">
229          <svg viewBox="0 0 36 36" fill="none"><path d="M16.4603 10.6066C16.8856 9.74492 18.1144 9.74492 18.5397 10.6066L20.1692 13.9083C20.338 14.2505 20.6645 14.4877 21.0421 14.5426L24.6857 15.072C25.6367 15.2102 26.0164 16.3789 25.3283 17.0496L22.6918 19.6196C22.4185 19.886 22.2938 20.2697 22.3583 20.6459L22.9807 24.2747C23.1432 25.2219 22.149 25.9441 21.2985 25.497L18.0395 23.7836C17.7018 23.6061 17.2982 23.6061 16.9605 23.7836L13.7015 25.497C12.851 25.9441 11.8568 25.2219 12.0193 24.2747L12.6417 20.6459C12.7062 20.2697 12.5815 19.886 12.3082 19.6196L9.6717 17.0496C8.98356 16.3789 9.36328 15.2102 10.3143 15.072L13.9579 14.5426C14.3355 14.4877 14.662 14.2505 14.8308 13.9083L16.4603 10.6066Z" fill="#FFD2C4"></path></svg>
230        </span>
231      </span>
232      <span class="lara_shot lara_shot_b" aria-hidden="true">
233        <span class="lara_shot_spin">
234          <svg viewBox="0 0 36 36" fill="none"><path d="M17.0444 8.94931C17.6398 7.74288 19.3602 7.74288 19.9556 8.94931L21.796 12.6784C22.0324 13.1575 22.4895 13.4895 23.0181 13.5664L27.1334 14.1643C28.4648 14.3578 28.99
23464 15.9939 28.033 16.933L25.0552 19.8357C24.6726 20.2086 24.498 20.7459 24.5884 21.2724L25.2913 25.3711C25.5188 26.6971 24.127 27.7083 22.9362 27.0822L19.2553 25.1471C18.7825 24.8985 18.2175 24.8985 17.7447 25.1471L14.0638 27.0822C12.873 27.7083 11.4812 26.6971 11.7087 25.3711L12.4116 21.2724C12.502 20.7459 12.3274 20.2086 11.9448 19.8357L8.96696 16.933C8.00357 15.9939 8.53518 14.3578 9.86655 14.1643L13.9818 13.5664C14.5105 13.4895 14.9676 13.1575 15.204 12.6784L17.0444 8.94931Z" fill="#FFD2C4"></path></svg>
235        </span>
236      </span>
237    </div>
238  </div>
239</div>
240`
241Vue.component('lara', {
242    template: larapopupTemplate,
243    props: {
244        language: null,
245        // 购买流程(/sort、/School、/Payment、支付成功页)里不显示移动端底部按钮:
246        // 那几页底部有自己的「下一步 / 购买」操作,通栏按钮会压在上面。
247        // 必须声明成 Boolean:数组写法下 <lara hide-mobile-btn> 拿到的是空串,判为假。
248        hideMobileBtn: Boolean
249    },
250    data: function () {
251        return {
252            cn: this.language,
253            dialogVisible:false,
254            tab: 'lara',
255            // 与站内其它组件同一口径(见 index.php 的 screenResize):<=750 视为移动端
256            mobileFlag: typeof window !== 'undefined' && window.innerWidth <= 750,
257            activeTab: "lara",
258            contactCode: false,
259            isSend: false,
260            form: {
261                email: '',
262                birth: '',
263                school: '',
264                name: '',
265                wechat: '',
266                subject: '',
267                demo: '',
268                fileList: []
269            },
270            emailLabel: '',
271            nameLabel: '',
272            birthLabel: '',
273            schoolLabel: '',
274            wechatLabel: '',
275            subjectLabel: '',
276            demoLabel: '',
277            fileList:[],
278            fileName: '',
279            FormRule: {
280                email: [
281                    { required: true, message: this.language==='cn' ? '请填写您的邮箱':"Please enter email address", trigger: 'blur' },
282                    { type: 'email', message: this.language==='cn' ? '请按照正确电子邮箱格式填写':"Please enter a valid email address", trigger: ['blur', 'change'] }
283                ],
284                name: [
285                    { required: true, message: this.language==='cn' ? '请填写您的名称':"Please enter your name", trigger: 'blur' },
286                    { pattern: /^([a-zA-Z]+\s)*[a-zA-Z]+$/, message: this.language==='cn' ? '请用英文填写':"Please enter English letters only", trigger: 'blur' }
287                ],
288                birth: [
289                    { required: true, message: this.language==='cn' ? '请选择出生日期':'Please enter a date in the format MM/DD/YYYY', trigger: ['blur', 'change'] }
290                ],
291                school: [
292                    { required: true, message: this.language==='cn' ? '请填写学校':'Please enter your school', trigger: ['blur', 'change'] }
293                ],
294                subject: [
295                    { required: true, message: this.language==='cn' ? '请填写主题':'Please enter your subject', trigger: ['blur', 'change'] }
296                ],
297                demo: [
298                    { required: true, message: this.language==='cn' ? '请填写您的问题  ':"Please enter your message", trigger: ['blur', 'change'] }
299                ]
300            },
301            loadingMaskSend: false,
302            result: null,
303            defaultTextareaHeight: 200, // 默认高度
304            minTextareaHeight: 72,      // 最小高度
305            perFileHeight: 55,          // 每个文件影响的高度
306        }
307    },
308    mounted(){
309        // 视口跨过 750 时要跟着切:移动端有遮罩、有独立的关闭按钮,PC 两者都没有
310        this._laraResize = () => { this.mobileFlag = window.innerWidth <= 750; };
311        window.addEventListener('resize', this._laraResize);
312        this._laraResize();
313    },
314    beforeDestroy(){
315        if (this._laraResize) window.removeEventListener('resize', this._laraResize);
316    },
317    methods: {
318        showpoup(){
319            this.dialogVisible=true;
320            // 检查 #lara-tab 是否存在
321            if (!document.querySelector('#lara-tab')) {
322                lara('mount', '#lara-tab');
323                (function () {
324                    console.log(1);
325                    var ctx = { page_url: location.href };
326                    var b = sessionStorage.getItem('birthday');
327                    if (b) ctx.birth_date = b;
328                    lara('context', ctx);
329                })();
330            }
331            var Lmin_date="10/11/1958";
332            var Lmax_date="10/11/2011";
333            this.$nextTick(()=>{
334                $(function(){
335                    setDatetimepicker( Lmin_date, Lmax_date, 'Lbirthday', 'Ldate_open', '#LbirthdayDateTime', this.language )
336                })
337            })
338        },
339        closepopup(){console.log(this.language)
340            this.dialogVisible=false
341        },
342        changeTab(tab) {
343            this.activeTab = tab;
344            this.tab = tab;
345            this.$emit("change", tab);
346        },
347        submitForm(){
348            let validateFlag = true;
349            let that = this;
350            this.$refs['form'].validate((valid) => {
351                if (valid) {
352                    //下一步
353                    let params = {
354                        cn: that.cn,
355                        email: that.form.email, //邮箱
356                        name: that.form.name,
357                        birth: that.form.birth,
358                        school: that.form.school,
359                        wechat: that.form.wechat,
360                        subject: that.form.subject,
361                        demo: that.form.demo,
362                    }
363                    if( that.form.fileList.length > 0 ){
364                        let pdf = [];
365                        that.form.fileList.forEach(elem => {
366                            pdf.push( elem.fileUrl )
367                        });
368                        params.pdf = pdf
369                    }
370                    that.loadingMaskSend = true
371                    $.ajax({
372                        url: "/index/index/info_customer?cn="+that.cn,
373                        type: 'post',
374                        data: params,
375                        dataType: 'json',
376                        success:function(data) {
377                            if (data.code === 1) {
378                                that.result = '1'
379                                setTimeout(function () {
380                                    that.loadingMaskSend = false
381                                    that.result = null
382                                    that.isSend = true;
383                                },1000)
384                            } else {
385                                // 提交失败
386                                that.loadingMaskSend = false
387                                that.$message.error( res.msg );
388                            }
389                        },
390                        error:function(){
391                            // 提交失败
392                            that.result = '2'
393                            setTimeout(function () {
394                                that.loadingMaskSend = false
395                                that.result = null
396                            },1000)
397                        }
398                    });
399                } else {
400                    validateFlag = false
401                    return false;
402                }
403            });
404        },
405        submitAnother(){
406            let that = this;
407            that.form.email= '';
408            that.form.birth= '';
409            that.form.school= '';
410            that.form.name= '';
411            that.form.wechat= '';
412            that.form.subject= '';
413            that.form.demo= '';
414            that.form.fileList= [];
415            that.isSend = false;
416        },
417        back(){
418            let that = this;
419            that.form.email= '';
420            that.form.birth= '';
421            that.form.school= '';
422            that.form.name= '';
423            that.form.wechat= '';
424            that.form.subject= '';
425            that.form.demo= '';
426            that.form.fileList= [];
427            that.isSend = false;
428        },
429        inputBlur( type ){
430            let _label = type + 'Label';
431            this[_label] = !!this.form[type]
432        },
433        handleRemove(file, fileList) {
434            this.file = ''
435            console.log('remove',file, fileList);
436        },
437        handlePreview(file) {
438            console.log(file);
439        },
440        handleExceed(files, fileList) {
441            this.$message.warning(`The number of files exceeds the limit`);
442        },
443        beforeRemove(file, fileList) {
444            return this.$confirm(`Confirm deleting ${ file.name }?`);
445        },
446        fileChange(file,fileList){
447        },
448        removeFile( index ){
449            let that = this;
450            that.form.fileList.splice(index, 1)
451            that.$nextTick(() => {
452                that.updateTextareaHeight('remove');
453            });
454        },
455        handleSuccess(response, file, fileList){
456            if( response.status === 'success' ){
457                let fileUrl = response.path;
458                let fileName = file.name; //当前上传文件名称
459                this.form.fileList.push({
460                    fileUrl: fileUrl,
461                    fileName: fileName
462                })
463                this.$message.success('Uploaded successfully');
464                this.$nextTick(() => {
465                    this.updateTextareaHeight('upload');
466                });
467            } else {
468                this.$message.error("Upload failed, please try again!");
469            }
470        },
471        updateTextareaHeight(action) {
472            const textarea = document.querySelector('.popup_lara_box .contact-form .el-textarea__inner');
473            if (!textarea) return;
474
475            // 获取当前实际高度
476            let currentHeight = parseInt(textarea.style.height) || this.defaultTextareaHeight;
477
478            // 根据操作计算新高度
479            let newHeight;
480            if (action === 'remove') {
481                // 删除文件:增加高度
482                newHeight = currentHeight + this.perFileHeight;
483            } else if (action === 'upload') {
484                // 上传文件:减少高度
485                newHeight = currentHeight - this.perFileHeight;
486            } else {
487                // 初始化或重置
488                newHeight = this.defaultTextareaHeight - (this.form.fileList.length * this.perFileHeight);
489            }
490
491            // 确保不低于最小高度
492            newHeight = Math.max(newHeight, this.minTextareaHeight);
493
494            // 确保不超过最大高度(可选)
495            const maxHeight = 200;
496            newHeight = Math.min(newHeight, maxHeight);
497
498            // 应用新高度
499            textarea.style.height = newHeight + 'px';
500            textarea.style.minHeight = newHeight + 'px';
501
502            // 如果内容超出,自动调整
503            if (textarea.scrollHeight > newHeight) {
504                textarea.style.height = textarea.scrollHeight + 'px';
505            }
506        },
507    },
508});
509

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.