| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <template> | 
 |  |  |   <div class="ordered-checkbox-container"> | 
 |  |  |     <!-- æ¨ªåæåçå¤éæ¡ç» --> | 
 |  |  |     <el-checkbox-group | 
 |  |  |       v-model="checkedValues" | 
 |  |  |       class="horizontal-checkbox-group" | 
 |  |  |     > | 
 |  |  |       <el-checkbox | 
 |  |  |         v-for="option in options" | 
 |  |  |         :key="getValue(option)" | 
 |  |  |         :label="getValue(option)" | 
 |  |  |       > | 
 |  |  |         {{ getLabel(option) }} | 
 |  |  |       </el-checkbox> | 
 |  |  |     </el-checkbox-group> | 
 |  |  |  | 
 |  |  |     <!-- éä¸é¡ºåºå±ç¤ºåºå --> | 
 |  |  |     <div v-if="selectedOrder.length > 0" class="selection-order-display"> | 
 |  |  |       <span class="order-label">æå¡æ§è¡é¡ºåºï¼</span> | 
 |  |  |       <span | 
 |  |  |         v-for="(value, index) in selectedOrder" | 
 |  |  |         :key="value" | 
 |  |  |         class="order-item" | 
 |  |  |       > | 
 |  |  |         {{ getSelectedIndex(index) }}.{{ getLabelByValue(value) }} | 
 |  |  |         <span v-if="index < selectedOrder.length - 1">ã</span> | 
 |  |  |       </span> | 
 |  |  |     </div> | 
 |  |  |     <div v-else class="selection-order-display"> | 
 |  |  |       <span class="order-label">ææ éä¸é¡¹</span> | 
 |  |  |     </div> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | export default { | 
 |  |  |   name: "OrderedCheckboxGroup", | 
 |  |  |   props: { | 
 |  |  |     options: { | 
 |  |  |       type: Array, | 
 |  |  |       default: () => [], | 
 |  |  |     }, | 
 |  |  |     value: { | 
 |  |  |       type: Array, | 
 |  |  |       default: () => [], | 
 |  |  |     }, | 
 |  |  |     valueKey: { | 
 |  |  |       type: String, | 
 |  |  |       default: "value", | 
 |  |  |     }, | 
 |  |  |     labelKey: { | 
 |  |  |       type: String, | 
 |  |  |       default: "label", | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       checkedValues: [], | 
 |  |  |       selectedOrder: [], | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     value: { | 
 |  |  |       immediate: true, | 
 |  |  |       handler(newVal) { | 
 |  |  |         if (JSON.stringify(newVal) !== JSON.stringify(this.checkedValues)) { | 
 |  |  |           this.checkedValues = [...newVal]; | 
 |  |  |           this.selectedOrder = [...newVal]; | 
 |  |  |         } | 
 |  |  |       }, | 
 |  |  |     }, | 
 |  |  |     checkedValues(newVal, oldVal) { | 
 |  |  |       const added = newVal.filter((item) => !oldVal.includes(item)); | 
 |  |  |       const removed = oldVal.filter((item) => !newVal.includes(item)); | 
 |  |  |  | 
 |  |  |       added.forEach((value) => { | 
 |  |  |         if (!this.selectedOrder.includes(value)) { | 
 |  |  |           this.selectedOrder.push(value); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       removed.forEach((value) => { | 
 |  |  |         const index = this.selectedOrder.indexOf(value); | 
 |  |  |         if (index > -1) { | 
 |  |  |           this.selectedOrder.splice(index, 1); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       this.$emit("input", [...newVal]); | 
 |  |  |       this.$emit("change", [...newVal], [...this.selectedOrder]); | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     getValue(option) { | 
 |  |  |       return typeof option === "object" ? option[this.valueKey] : option; | 
 |  |  |     }, | 
 |  |  |     getLabel(option) { | 
 |  |  |       return typeof option === "object" ? option[this.labelKey] : option; | 
 |  |  |     }, | 
 |  |  |     getLabelByValue(value) { | 
 |  |  |       const option = this.options.find( | 
 |  |  |         (opt) => this.getValue(opt) === value | 
 |  |  |       ); | 
 |  |  |       return option ? this.getLabel(option) : value; | 
 |  |  |     }, | 
 |  |  |     getSelectedIndex(index) { | 
 |  |  |       if (index < 20) { | 
 |  |  |         return String.fromCharCode(0x2460 + index); | 
 |  |  |       } else { | 
 |  |  |         return `(${index + 1})`; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     getSelectionOrder() { | 
 |  |  |       return [...this.selectedOrder]; | 
 |  |  |     }, | 
 |  |  |     setSelectionOrder(orderedValues) { | 
 |  |  |       this.selectedOrder = [...orderedValues]; | 
 |  |  |       this.checkedValues = [...orderedValues]; | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style scoped> | 
 |  |  | .ordered-checkbox-container { | 
 |  |  |   display: flex; | 
 |  |  |   flex-direction: column; | 
 |  |  |   gap: 16px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .horizontal-checkbox-group { | 
 |  |  |   display: flex; | 
 |  |  |   flex-wrap: wrap; | 
 |  |  |   gap: 20px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .selection-order-display { | 
 |  |  |   padding: 12px; | 
 |  |  |   background-color: #f5f7fa; | 
 |  |  |   border-radius: 4px; | 
 |  |  |   border: 1px solid #ebeef5; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .order-label { | 
 |  |  |   font-weight: bold; | 
 |  |  |   color: #606266; | 
 |  |  |   margin-right: 8px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .order-item { | 
 |  |  |   color: #409eff; | 
 |  |  |   font-weight: 500; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /* ååºå¼è®¾è®¡ï¼å°å±å¹æ¶æ¢è¡ */ | 
 |  |  | @media (max-width: 768px) { | 
 |  |  |   .horizontal-checkbox-group { | 
 |  |  |     gap: 12px; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .selection-order-display { | 
 |  |  |     padding: 8px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |       sessionTimersExpires: 300, | 
 |  |  |       extraHeaders: [ | 
 |  |  |         "Min-SE: 120", | 
 |  |  |         "Route: <sip:@192.168.100.6>", | 
 |  |  |         "Route: <sip:@192.168.10.124>", | 
 |  |  |         "Accept: application/sdp", | 
 |  |  |         "Supported: replaces, timer", | 
 |  |  |         "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS", | 
 |  |  | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     this.currentSession = this.ua.call( | 
 |  |  |       `sip:${targetNumber}@192.168.100.6`, | 
 |  |  |       `sip:${targetNumber}@192.168.10.124`, | 
 |  |  |       options | 
 |  |  |     ); | 
 |  |  |     // å¨ä¼è¯å建å修湠SDP | 
 |  |  | 
 |  |  |           .call(pc, offerOptions) | 
 |  |  |           .then((offer) => { | 
 |  |  |             const modifiedSdp = offer.sdp | 
 |  |  |               .replace(/c=IN IP4 192\.168\.100\.10/g, "c=IN IP4 192.168.100.6") | 
 |  |  |               .replace(/c=IN IP4 192\.168\.100\.10/g, "c=IN IP4 192.168.10.124") | 
 |  |  |               .replace(/m=audio \d+ RTP\/AVP.*/, "m=audio 7078 RTP/AVP 0 8"); | 
 |  |  |             return new RTCSessionDescription({ | 
 |  |  |               type: "offer", | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | <template> | 
 |  |  |   <div class="Questionnairemanagement"> | 
 |  |  |     <!-- å·¦ä¾§æ  --> | 
 |  |  |     <div class="sidecolumn"> | 
 |  |  |       <el-steps finish-status="success" :active="Editprogress" simple> | 
 |  |  |         <el-step> | 
 |  |  |           <template slot="title"> | 
 |  |  |             <span style="cursor: pointer" @click="Editprogress = 1" | 
 |  |  |               >åºç¡ä¿¡æ¯è®¾ç½®</span | 
 |  |  |             > | 
 |  |  |           </template> | 
 |  |  |         </el-step> | 
 |  |  |         <el-step> | 
 |  |  |           <template slot="title"> | 
 |  |  |             <span style="cursor: pointer" @click="Editprogress = 2" | 
 |  |  |               >宣æå
容</span | 
 |  |  |             > | 
 |  |  |           </template> | 
 |  |  |         </el-step> | 
 |  |  |       </el-steps> | 
 |  |  |     </div> | 
 |  |  |     <!-- å³ä¾§æ°æ® --> | 
 |  |  |     <div class="leftvlue"> | 
 |  |  |       <!-- åºæ¬ä¿¡æ¯ --> | 
 |  |  |       <div v-if="Editprogress == 1"> | 
 |  |  |         <div class="leftvlue-jbxx">åºæ¬ä¿¡æ¯</div> | 
 |  |  |         <el-divider></el-divider> | 
 |  |  |         <el-form | 
 |  |  |           :model="ruleForm" | 
 |  |  |           :rules="rules" | 
 |  |  |           ref="ruleForm" | 
 |  |  |           label-width="100px" | 
 |  |  |           class="demo-ruleForm" | 
 |  |  |         > | 
 |  |  |           <el-form-item label="宣æåç±»" prop="region"> | 
 |  |  |             <el-select | 
 |  |  |               v-model="ruleForm.assortid" | 
 |  |  |               size="medium" | 
 |  |  |               filterable | 
 |  |  |               placeholder="è¯·éæ©åç±»" | 
 |  |  |             > | 
 |  |  |               <el-option-group | 
 |  |  |                 v-for="group in sortlist" | 
 |  |  |                 :key="group.id" | 
 |  |  |                 :label="group.assortname" | 
 |  |  |               > | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in group.heLibraryAssortList" | 
 |  |  |                   :key="item.id" | 
 |  |  |                   :label="item.assortname" | 
 |  |  |                   :value="item.id" | 
 |  |  |                 > | 
 |  |  |                 </el-option> | 
 |  |  |               </el-option-group> | 
 |  |  |             </el-select> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-row> | 
 |  |  |             <el-col :span="12"> </el-col> | 
 |  |  |             <el-col :span="12"> </el-col> | 
 |  |  |           </el-row> | 
 |  |  |           <el-form-item label="å®£ææ é¢" prop="preachname"> | 
 |  |  |             <div style="width: 30%"> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="ruleForm.preachname" | 
 |  |  |                 placeholder="请è¾å
¥æ é¢" | 
 |  |  |               ></el-input> | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="宣ææè¿°" prop="preachcontent"> | 
 |  |  |             <div style="width: 60%"> | 
 |  |  |               <el-input | 
 |  |  |                 type="textarea" | 
 |  |  |                 :rows="2" | 
 |  |  |                 v-model="ruleForm.preachcontent" | 
 |  |  |                 placeholder="请è¾å
¥æè¿°" | 
 |  |  |               ></el-input> | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="éç¥åé" prop="name"> | 
 |  |  |             <div style="margin-bottom: 5px" v-for="item in variablelist"> | 
 |  |  |               <el-row> | 
 |  |  |                 <el-col :span="5"> | 
 |  |  |                   <el-input | 
 |  |  |                     v-model="item.variatename" | 
 |  |  |                     placeholder="请è¾å
¥åéå" | 
 |  |  |                   ></el-input> | 
 |  |  |                 </el-col> | 
 |  |  |                 <el-col :span="8" :offset="1"> | 
 |  |  |                   <el-input | 
 |  |  |                     v-model="item.variate" | 
 |  |  |                     placeholder="请è¾å
¥åéå
容" | 
 |  |  |                   ></el-input> | 
 |  |  |                 </el-col> | 
 |  |  |                 <el-col :span="8" :offset="1"> | 
 |  |  |                   <el-button | 
 |  |  |                     type="success" | 
 |  |  |                     icon="el-icon-plus" | 
 |  |  |                     circle | 
 |  |  |                     @click="addvariable(item)" | 
 |  |  |                   ></el-button> | 
 |  |  |                   <el-button | 
 |  |  |                     v-if="!item.default" | 
 |  |  |                     type="danger" | 
 |  |  |                     icon="el-icon-delete" | 
 |  |  |                     circle | 
 |  |  |                     @click="delvariable(item)" | 
 |  |  |                   ></el-button> | 
 |  |  |                 </el-col> | 
 |  |  |               </el-row> | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |  | 
 |  |  |           <el-form-item label="æä»¶" prop="sickness"> | 
 |  |  |             <div style="width: 40%"> | 
 |  |  |               <el-upload | 
 |  |  |                 class="upload-demo" | 
 |  |  |                 action="https://jsonplaceholder.typicode.com/posts/" | 
 |  |  |                 :on-change="handleChange" | 
 |  |  |                 :file-list="fileList" | 
 |  |  |               > | 
 |  |  |                 <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> | 
 |  |  |                 <div slot="tip" class="el-upload__tip"> | 
 |  |  |                   åªè½ä¸ä¼ jpg/png/xslæä»¶ï¼ä¸ä¸è¶
è¿50mb | 
 |  |  |                 </div> | 
 |  |  |               </el-upload> | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="æ ç¾" prop="desc"> | 
 |  |  |             <div class="xinz-inf"> | 
 |  |  |               <el-tag | 
 |  |  |                 :key="tag.tagname" | 
 |  |  |                 type="success" | 
 |  |  |                 v-for="tag in dynamicTags" | 
 |  |  |                 closable | 
 |  |  |                 :disable-transitions="false" | 
 |  |  |                 @close="handleClosetag(tag)" | 
 |  |  |               > | 
 |  |  |                 {{ tag.tagname }} | 
 |  |  |               </el-tag> | 
 |  |  |               <el-select | 
 |  |  |                 v-model="inputValue" | 
 |  |  |                 v-if="inputVisible" | 
 |  |  |                 @change="handleInputConfirm" | 
 |  |  |                 filterable | 
 |  |  |                 remote | 
 |  |  |                 allow-create | 
 |  |  |                 reserve-keyword | 
 |  |  |                 default-first-option | 
 |  |  |                 :remote-method="remoteMethodtag" | 
 |  |  |                 :loading="loading" | 
 |  |  |                 placeholder="è¯·éæ©" | 
 |  |  |               > | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in optionstag" | 
 |  |  |                   :key="item.tagid" | 
 |  |  |                   :label="item.tagname" | 
 |  |  |                   :value="item.tagname" | 
 |  |  |                 > | 
 |  |  |                 </el-option> | 
 |  |  |               </el-select> | 
 |  |  |               <el-button | 
 |  |  |                 v-else | 
 |  |  |                 class="button-new-tag" | 
 |  |  |                 size="small" | 
 |  |  |                 @click="showInput" | 
 |  |  |                 >+ æ°å¢æ ç¾</el-button | 
 |  |  |               > | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-row :gutter="20"> | 
 |  |  |             <el-col :span="6"> | 
 |  |  |               <el-form-item label="çæ¬å·" prop="name"> | 
 |  |  |                 <el-input | 
 |  |  |                   v-model="ruleForm.version" | 
 |  |  |                   placeholder="é»è®¤1.0.1" | 
 |  |  |                 ></el-input> </el-form-item | 
 |  |  |             ></el-col> | 
 |  |  |             <el-col :span="9"> | 
 |  |  |               <el-form-item label="å¯ç¨ç¶æ" prop="region"> | 
 |  |  |                 <el-radio-group v-model="ruleForm.isAvailable"> | 
 |  |  |                   <el-radio | 
 |  |  |                     v-for="(item, index) in usable" | 
 |  |  |                     :label="item.value" | 
 |  |  |                     >{{ item.label }}</el-radio | 
 |  |  |                   > | 
 |  |  |                 </el-radio-group> | 
 |  |  |               </el-form-item></el-col | 
 |  |  |             > | 
 |  |  |           </el-row> | 
 |  |  |           <el-form-item label="å®£ææ¹å¼" prop="region"> | 
 |  |  |             <el-select | 
 |  |  |               v-model="ruleForm.suitway" | 
 |  |  |               size="medium" | 
 |  |  |               multiple | 
 |  |  |               filterable | 
 |  |  |               placeholder="è¯·éæ©åç±»" | 
 |  |  |             > | 
 |  |  |               <el-option | 
 |  |  |                 class="ruleFormaa" | 
 |  |  |                 v-for="item in mode" | 
 |  |  |                 :key="item.label" | 
 |  |  |                 :label="item.label" | 
 |  |  |                 :value="item.label" | 
 |  |  |               > | 
 |  |  |               </el-option> | 
 |  |  |             </el-select> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="éç¨ç¾ç
" prop="region"> | 
 |  |  |             <el-button type="warning" @click="$refs.child.handleAddpatient()" | 
 |  |  |               >æ·»å ç¾ç
</el-button | 
 |  |  |             > | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="éç¨é¢åº" prop="region"> | 
 |  |  |             <el-select | 
 |  |  |               v-model="ruleForm.campus" | 
 |  |  |               size="medium" | 
 |  |  |               multiple | 
 |  |  |               filterable | 
 |  |  |               placeholder="è¯·éæ©åç±»" | 
 |  |  |             > | 
 |  |  |               <el-option | 
 |  |  |                 class="ruleFormaa" | 
 |  |  |                 v-for="item in courtyardlist" | 
 |  |  |                 :key="item.value" | 
 |  |  |                 :label="item.label" | 
 |  |  |                 :value="item.value" | 
 |  |  |               > | 
 |  |  |               </el-option> | 
 |  |  |             </el-select> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="éç¨ç§å®¤" prop="region"> | 
 |  |  |             <el-cascader | 
 |  |  |               v-model="tempDetpRelevanceslist" | 
 |  |  |               :options="deptList" | 
 |  |  |               :props="props" | 
 |  |  |               :show-all-levels="false" | 
 |  |  |               clearable | 
 |  |  |             > | 
 |  |  |               <template slot-scope="{ node, data }"> | 
 |  |  |                 <span>{{ data.deptName }}</span> | 
 |  |  |                 <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> | 
 |  |  |               </template> | 
 |  |  |             </el-cascader> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item> | 
 |  |  |             <el-button type="success" @click="nextstep('ruleForm')" | 
 |  |  |               >ä¸ä¸æ¥</el-button | 
 |  |  |             > | 
 |  |  |             <el-button type="success" @click="Departmenttreatment('ruleForm')" | 
 |  |  |               >ä¿å</el-button | 
 |  |  |             > | 
 |  |  |             <el-button type="info" @click="closeFm('ruleForm')">å
³é</el-button> | 
 |  |  |           </el-form-item> | 
 |  |  |         </el-form> | 
 |  |  |       </div> | 
 |  |  |       <!-- å®£æå
容 --> | 
 |  |  |       <div v-if="Editprogress == 2"> | 
 |  |  |         <el-row :gutter="20"> | 
 |  |  |           <el-col :span="4"> | 
 |  |  |             <div class="leftvlue-jbxx">宣æå
容</div> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :offset="16" :span="4"> | 
 |  |  |             <el-upload | 
 |  |  |               class="upload-demo" | 
 |  |  |               :action="uploadImgUrlword" | 
 |  |  |               :on-success="uploadEditorSuccessword" | 
 |  |  |               :on-error="uploadEditorErrorword" | 
 |  |  |               :before-upload="beforeEditorUploadword" | 
 |  |  |               :headers="headers" | 
 |  |  |             > | 
 |  |  |               <el-button size="small" type="primary">wordæä»¶ä¸ä¼ </el-button> | 
 |  |  |             </el-upload> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |  | 
 |  |  |         <div> | 
 |  |  |           <el-form | 
 |  |  |             :model="ruleForm" | 
 |  |  |             :rules="rules" | 
 |  |  |             ref="ruleForm" | 
 |  |  |             label-width="100px" | 
 |  |  |             class="demo-ruleForm" | 
 |  |  |           > | 
 |  |  |             <!-- <el-row :gutter="20"> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="èµæå½¢å¼" prop="region"> | 
 |  |  |                   <el-select | 
 |  |  |                     v-model="ruleForm.shape" | 
 |  |  |                     placeholder="è¯·éæ©å
容形å¼" | 
 |  |  |                   > | 
 |  |  |                     <el-option | 
 |  |  |                       v-for="item in xjxsoptions" | 
 |  |  |                       :key="item.value" | 
 |  |  |                       :label="item.label" | 
 |  |  |                       :value="item.value" | 
 |  |  |                     > | 
 |  |  |                     </el-option> | 
 |  |  |                   </el-select> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> --> | 
 |  |  |  | 
 |  |  |             <!-- </el-col> | 
 |  |  |             </el-row> --> | 
 |  |  |           </el-form> | 
 |  |  |         </div> | 
 |  |  |         <!-- <div> | 
 |  |  |           <div id="quillEditorQiniu"> | 
 |  |  |             <el-upload | 
 |  |  |               class="avatar-uploader" | 
 |  |  |               :action="uploadImgUrl" | 
 |  |  |               :accept="'image/*,video/*'" | 
 |  |  |               :show-file-list="false" | 
 |  |  |               :on-success="uploadEditorSuccess" | 
 |  |  |               :on-error="uploadEditorError" | 
 |  |  |               :before-upload="beforeEditorUpload" | 
 |  |  |               :headers="headers" | 
 |  |  |             > | 
 |  |  |             </el-upload> | 
 |  |  |             <quill-editor | 
 |  |  |               class="editor" | 
 |  |  |               v-model="content" | 
 |  |  |               ref="customQuillEditor" | 
 |  |  |               :options="editorOption" | 
 |  |  |               @blur="onEditorBlur" | 
 |  |  |               @focus="onEditorFocus" | 
 |  |  |               @change="onEditorChange" | 
 |  |  |             > | 
 |  |  |             </quill-editor> | 
 |  |  |           </div> | 
 |  |  |         </div> --> | 
 |  |  |         <!-- æ°ç»ä»¶ --> | 
 |  |  |         <div style="border: 1px solid #ccc; margin: 10px"> | 
 |  |  |           <Toolbar | 
 |  |  |             style="border-bottom: 1px solid #ccc" | 
 |  |  |             :editor="editor" | 
 |  |  |             :defaultConfig="toolbarConfig" | 
 |  |  |             :mode="modes" | 
 |  |  |           /> | 
 |  |  |           <Editor | 
 |  |  |             style="height: 500px; overflow-y: hidden" | 
 |  |  |             v-model="content" | 
 |  |  |             :defaultConfig="editorConfig" | 
 |  |  |             :mode="modes" | 
 |  |  |             @onCreated="onCreated" | 
 |  |  |           /> | 
 |  |  |         </div> | 
 |  |  |         <div> | 
 |  |  |           <el-button @click="laststep('ruleForm')">ä¸ä¸æ¥</el-button> | 
 |  |  |           <el-button type="success" @click="Departmenttreatment('ruleForm')" | 
 |  |  |             >ä¿å</el-button | 
 |  |  |           > | 
 |  |  |           <el-button type="warning" @click="Departmenttreatment('ruleForm')" | 
 |  |  |             >å¦åæ°çæ¬</el-button | 
 |  |  |           > | 
 |  |  |           <el-button type="info" @click="closeFm('ruleForm')">å
³é</el-button> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |     <!-- æ·»å éç¨ç¾ç
çªå£ --> | 
 |  |  |     <Optional-Form | 
 |  |  |       ref="child" | 
 |  |  |       :dialogVisiblepatient="dialogVisiblepatient" | 
 |  |  |       :overallCase="illnesslist" | 
 |  |  |       @addoption="dialogVisiblepatient = false" | 
 |  |  |       @kkoption="dialogVisiblepatient = true" | 
 |  |  |     /> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import { quillEditor } from "vue-quill-editor"; | 
 |  |  | import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; | 
 |  |  | import axios from "axios"; | 
 |  |  |  | 
 |  |  | import { | 
 |  |  |   getheLibraryAssort, | 
 |  |  |   delheLibraryAssort, | 
 |  |  |   addheLibraryAssort, | 
 |  |  |   addtargetillness, | 
 |  |  |   getlibrarylist, | 
 |  |  |   dellibraryinfo, | 
 |  |  |   deltargetillness, | 
 |  |  |   compilelibrary, | 
 |  |  |   addrichText, | 
 |  |  |   getlibraryinfo, | 
 |  |  |   getillnesslist, | 
 |  |  |   illnesslistget, | 
 |  |  |   getillness, | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import OptionalForm from "@/components/OptionalForm"; //æ£åç»ä»¶ | 
 |  |  |  | 
 |  |  | import { listDept } from "@/api/system/dept"; | 
 |  |  | // import * as Quill from "quill"; | 
 |  |  | import Quill from "quill"; | 
 |  |  | import { listtag } from "@/api/system/label"; | 
 |  |  | import store from "@/store"; | 
 |  |  |  | 
 |  |  | // è¿éå¼å
¥ä¿®æ¹è¿çvideo模å并注å | 
 |  |  | import Video from "./video"; | 
 |  |  | Quill.register(Video, true); | 
 |  |  | //è·åç»å½tokenï¼å¼å
¥æä»¶ï¼å¦æåªæ¯ç®åæµè¯ï¼æ²¡æä¸ä¼ æä»¶æ¯å¦ç»å½çéå¶çè¯ï¼ | 
 |  |  | //è¿ä¸ªtokenå¯ä»¥ä¸ç¨è·åï¼æä»¶å¯ä»¥ä¸å¼å
¥ï¼æä¸é¢å¯¹åºçä¸ä¼ æä»¶æºå¸¦è¯·æ±å¤´  :headers="headers" è¿ä¸ªä»£ç å æå³å¯ | 
 |  |  | import { getToken } from "@/utils/auth"; | 
 |  |  | const toolbarOptions = [ | 
 |  |  |   ["bold", "italic", "underline", "strike"], // toggled buttons | 
 |  |  |   ["blockquote", "code-block"], | 
 |  |  |  | 
 |  |  |   [{ header: 1 }, { header: 2 }], // custom button values | 
 |  |  |   [{ list: "ordered" }, { list: "bullet" }], | 
 |  |  |   [{ script: "sub" }, { script: "super" }], // superscript/subscript | 
 |  |  |   [{ indent: "-1" }, { indent: "+1" }], // outdent/indent | 
 |  |  |   [{ direction: "rtl" }], // text direction | 
 |  |  |  | 
 |  |  |   [{ size: ["small", false, "large", "huge"] }], // custom dropdown | 
 |  |  |   [{ header: [1, 2, 3, 4, 5, 6, false] }], | 
 |  |  |  | 
 |  |  |   [{ color: [] }, { background: [] }], // dropdown with defaults from theme | 
 |  |  |   [{ font: [] }], | 
 |  |  |   [{ align: [] }], | 
 |  |  |   ["link", "image", "video"], | 
 |  |  |   ["clean"], // remove formatting button | 
 |  |  | ]; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: "aEducationinfo", | 
 |  |  |   components: { OptionalForm, Editor, Toolbar }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       editor: null, | 
 |  |  |       content: "<p>hello</p>", | 
 |  |  |       toolbarConfig: {}, | 
 |  |  |       editorConfig: { | 
 |  |  |         placeholder: "请è¾å
¥å
容...", | 
 |  |  |         menus: [ | 
 |  |  |           "head", | 
 |  |  |           "bold", | 
 |  |  |           "italic", | 
 |  |  |           "underline", | 
 |  |  |           "image", | 
 |  |  |           "link", | 
 |  |  |           "list", | 
 |  |  |           "undo", | 
 |  |  |           "redo", | 
 |  |  |           "file", // æ·»å èªå®ä¹æä»¶ä¸ä¼ èå | 
 |  |  |         ], | 
 |  |  |         uploadImgServer: process.env.VUE_APP_BASE_API + "/common/uploadSort", // å¾çä¸ä¼ æ¥å£ | 
 |  |  |         uploadImgHeaders: { | 
 |  |  |           Authorization: "Bearer " + getToken(), | 
 |  |  |         }, // èªå®ä¹ä¸ä¼ ç headers | 
 |  |  |         uploadImgParams: { key: "value" }, // èªå®ä¹ä¸ä¼ çåæ° | 
 |  |  |         uploadImgMaxSize: 2 * 1024 * 1024, // å¾çæå¤§å¤§å°ï¼åä½ Byte | 
 |  |  |         uploadImgMaxLength: 1, // ä¸æ¬¡æå¤ä¸ä¼ å¾çæ°é | 
 |  |  |         uploadImgTimeout: 3 * 60 * 1000, // è¶
æ¶æ¶é´ï¼åä½ ms | 
 |  |  |         uploadImgHooks: { | 
 |  |  |           customInsert: (insertImgFn, result) => { | 
 |  |  |             const url = result.url; // è·åå¾çå°å | 
 |  |  |             insertImgFn(url); // æå
¥å¾ç | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |         customMenus: { | 
 |  |  |           file: { | 
 |  |  |             tip: "ä¸ä¼ æä»¶", | 
 |  |  |             click: (editor) => { | 
 |  |  |               const input = document.createElement("input"); | 
 |  |  |               input.type = "file"; | 
 |  |  |               input.accept = | 
 |  |  |                 "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // æ¯æçæä»¶ç±»å | 
 |  |  |               input.onchange = (e) => { | 
 |  |  |                 const file = e.target.files[0]; | 
 |  |  |                 if (!file) return; | 
 |  |  |                 const formData = new FormData(); | 
 |  |  |                 formData.append("file", file); | 
 |  |  |  | 
 |  |  |                 // ç¡®ä¿ process.env.VUE_APP_BASE_API æ¯æ£ç¡®ç | 
 |  |  |                 const uploadUrl = | 
 |  |  |                   process.env.VUE_APP_BASE_API + "/common/uploadSort"; | 
 |  |  |                 axios | 
 |  |  |                   .post(uploadUrl, formData, { | 
 |  |  |                     headers: { | 
 |  |  |                       Authorization: "Bearer " + getToken(), | 
 |  |  |                     }, | 
 |  |  |                   }) | 
 |  |  |                   .then((res) => { | 
 |  |  |                     const url = res.data.url; // è·åæä»¶å°å | 
 |  |  |                     // æå
¥æä»¶é¾æ¥ä½ä¸ºæ®éææ¬ | 
 |  |  |                     editor.txt.append(url + " "); | 
 |  |  |                     // æè
æå
¥æä»¶é¾æ¥ä½ä¸ºè¶
龿¥ | 
 |  |  |                     // editor.cmd.do('insertLink', { name: 'æä»¶é¾æ¥', url: url }); | 
 |  |  |                   }) | 
 |  |  |                   .catch((err) => { | 
 |  |  |                     console.error("æä»¶ä¸ä¼ å¤±è´¥", err); | 
 |  |  |                   }); | 
 |  |  |               }; | 
 |  |  |               input.click(); | 
 |  |  |             }, | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |       }, | 
 |  |  |       modes: "default", // or 'simple' | 
 |  |  |       headers: { | 
 |  |  |         Authorization: "Bearer " + getToken(), | 
 |  |  |       }, | 
 |  |  |       uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort", | 
 |  |  |       uploadImgUrlword: process.env.VUE_APP_BASE_API + "/common/uploadShow", | 
 |  |  |       uploadUrlPath: "没ææä»¶ä¸ä¼ ", | 
 |  |  |       quillUpdateImg: false, | 
 |  |  |       fileList: [ | 
 |  |  |         { | 
 |  |  |           name: "food.jpeg", | 
 |  |  |           url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |           name: "food2.jpeg", | 
 |  |  |           url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", | 
 |  |  |         }, | 
 |  |  |       ], | 
 |  |  |       content: `<p>æµè¯</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/è¥å
»æ³µæä½è§è.mp4"></video><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/注å°å¨æ¨æ³¨.mp4"></video><p>321</p>"`, //æç»ä¿åçå
容 | 
 |  |  |       fileName: "", //æä»¶å | 
 |  |  |       dynamicTags: [], | 
 |  |  |       inputVisible: false, | 
 |  |  |       illnessVisible: false, | 
 |  |  |       dialogVisiblepatient: false, //éç¨ç¾ç
çªå£ | 
 |  |  |       inputValue: "", | 
 |  |  |       // å¯ææ¬ | 
 |  |  |       editorOption: { | 
 |  |  |         placeholder: "ä½ æ³è¯´ä»ä¹ï¼", | 
 |  |  |         modules: { | 
 |  |  |           imageResize: { | 
 |  |  |             displayStyles: { | 
 |  |  |               backgroundColor: "black", | 
 |  |  |               border: "none", | 
 |  |  |               color: "white", | 
 |  |  |             }, | 
 |  |  |             modules: ["Resize", "DisplaySize", "Toolbar"], | 
 |  |  |           }, | 
 |  |  |           toolbar: { | 
 |  |  |             container: toolbarOptions, // å·¥å
·æ  | 
 |  |  |             handlers: { | 
 |  |  |               image: function (value) { | 
 |  |  |                 if (value) { | 
 |  |  |                   document | 
 |  |  |                     .querySelector("#quillEditorQiniu .avatar-uploader input") | 
 |  |  |                     .click(); | 
 |  |  |                 } else { | 
 |  |  |                   this.quill.format("image", false); | 
 |  |  |                 } | 
 |  |  |               }, | 
 |  |  |               video: function (value) { | 
 |  |  |                 if (value) { | 
 |  |  |                   document | 
 |  |  |                     .querySelector("#quillEditorQiniu .avatar-uploader input") | 
 |  |  |                     .click(); | 
 |  |  |                 } else { | 
 |  |  |                   this.quill.format("video", false); | 
 |  |  |                 } | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |       }, | 
 |  |  |  | 
 |  |  |       sidecolumnrabs: "left", //æ¹å | 
 |  |  |       Editprogress: 1, //ç¼è¾è¿åº¦ | 
 |  |  |       currentVersion: "1.2.3", //å½åçæ¬ | 
 |  |  |       loading: false, // é®ç½©å± | 
 |  |  |       drawer: false, //æ§å¶å±å¼ | 
 |  |  |       radio: "false", //åéé¢éä¸ | 
 |  |  |       radios: [], //å¤éé¢éä¸ | 
 |  |  |       radioas: "", //填空é¢çæ¡ | 
 |  |  |       // æ»æ¡æ° | 
 |  |  |       total: 1, | 
 |  |  |       hetype: "", | 
 |  |  |       id: null, | 
 |  |  |       ruleForm: { | 
 |  |  |         campus: [], | 
 |  |  |         heLibraryTagList: [], | 
 |  |  |         tempDetpRelevances: [], | 
 |  |  |         version: "1.0.1", | 
 |  |  |       }, | 
 |  |  |       rules: {}, | 
 |  |  |       rulesa: {}, | 
 |  |  |       mode: [], | 
 |  |  |       editableTabs: [], | 
 |  |  |       sortlist: [], | 
 |  |  |       usable: [], | 
 |  |  |       courtyardlist: [], | 
 |  |  |       precedencetype: [], | 
 |  |  |       optionsillness: [], | 
 |  |  |       illnesslistapi: [], | 
 |  |  |       illnesslist: [], | 
 |  |  |       options: [], | 
 |  |  |       optionstag: [], | 
 |  |  |       deptList: [], | 
 |  |  |       tempDetpRelevanceslist: [], | 
 |  |  |       props: { multiple: true, value: "deptId", label: "deptName" }, | 
 |  |  |       // å
ç½çé¨åï¼æä»¶ï¼ | 
 |  |  |       oldPattern: "http://192.168.191.181:8095/profile/upload", | 
 |  |  |       // å
ç½çé¨åï¼æä»¶ï¼ | 
 |  |  |       oldPatternhtml: "/http:\/\/192\.168\.191\.181:8095\/profile\/upload\//g", | 
 |  |  |       // å¤ç½é¨åï¼æä»¶ï¼ | 
 |  |  |       newPattern: "http://218.108.11.22:8093/profile-api/upload", | 
 |  |  |  | 
 |  |  |       xjxsoptions: [ | 
 |  |  |         { | 
 |  |  |           value: "1", | 
 |  |  |           label: "徿", | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |           value: "2", | 
 |  |  |           label: "è§é¢", | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |           value: "3", | 
 |  |  |           label: "é³é¢", | 
 |  |  |         }, | 
 |  |  |       ], | 
 |  |  |       valssu: [ | 
 |  |  |         { | 
 |  |  |           idd: 1, | 
 |  |  |           wssd: "ä½ æè¿æä¹æ ·", | 
 |  |  |           sdadd: ["sss", "ssccss", "ssaas", "ss"], | 
 |  |  |         }, | 
 |  |  |       ], | 
 |  |  |       addvalue: "æ·»å é¢ç®", | 
 |  |  |  | 
 |  |  |       variablelist: [ | 
 |  |  |         { variatename: "å§å", variate: "${name}", default: 1 }, | 
 |  |  |         { variatename: "çµè¯", variate: "${phone}", default: 1 }, | 
 |  |  |         { variatename: "ç
æ
", variate: "${illness}", default: 1 }, | 
 |  |  |       ], | 
 |  |  |       // æ¥è¯¢åæ° | 
 |  |  |       queryParams: { | 
 |  |  |         pageNum: 1, | 
 |  |  |         pageSize: 10, | 
 |  |  |       }, | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   activated() { | 
 |  |  |     if (this.id != this.$route.query.id) { | 
 |  |  |       this.gettabList(); | 
 |  |  |       this.getList(); | 
 |  |  |       this.illnessUpdate(); | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |  | 
 |  |  |   created() { | 
 |  |  |     this.gettabList(); | 
 |  |  |     this.getList(); | 
 |  |  |     this.illnessUpdate(); | 
 |  |  |     this.mode = store.getters.mode; | 
 |  |  |     this.editableTabs = store.getters.editableTabs; | 
 |  |  |     this.usable = store.getters.usable; | 
 |  |  |     this.precedencetype = store.getters.precedencetype; | 
 |  |  |     this.courtyardlist = store.getters.courtyardlist; | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     content(newVal, oldVal) { | 
 |  |  |       //this.$emit('input', newVal); | 
 |  |  |       console.log(newVal, "A"); | 
 |  |  |       console.log(oldVal, "B"); | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   beforeDestroy() { | 
 |  |  |     const editor = this.editor; | 
 |  |  |     if (editor == null) return; | 
 |  |  |     editor.destroy(); // ç»ä»¶éæ¯æ¶ï¼åæ¶éæ¯ç¼è¾å¨ | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     onCreated(editor) { | 
 |  |  |       this.editor = Object.seal(editor); // ä¸å®è¦ç¨ Object.seal()ï¼å¦å伿¥é | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // --------------------------------- | 
 |  |  |     processElement(element) { | 
 |  |  |       return { ...element, isoperation: null }; | 
 |  |  |     }, | 
 |  |  |     // è·å页颿°æ® | 
 |  |  |     getList() { | 
 |  |  |       this.loading = true; | 
 |  |  |       this.id = this.$route.query.id; | 
 |  |  |       this.hetype = this.$route.query.hetype; | 
 |  |  |       if (this.id) { | 
 |  |  |         getlibraryinfo({ id: this.id }).then((res) => { | 
 |  |  |           this.ruleForm = res.data[0]; | 
 |  |  |           if (this.ruleForm.campus) | 
 |  |  |             this.ruleForm.campus = this.ruleForm.campus.split(","); | 
 |  |  |           this.dynamicTags = res.data[0].heLibraryTagList.map( | 
 |  |  |             this.processElement | 
 |  |  |           ); | 
 |  |  |           if (this.ruleForm.htmlRichText) { | 
 |  |  |             this.Getmissioncontent(this.ruleForm.htmlRichText); | 
 |  |  |           } | 
 |  |  |           if (this.ruleForm.deptNames) { | 
 |  |  |             this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); | 
 |  |  |           } | 
 |  |  |           if (this.ruleForm.suitway) { | 
 |  |  |             this.ruleForm.suitway = this.ruleForm.suitway.split(","); | 
 |  |  |           } | 
 |  |  |           this.variablelist = this.ruleForm.otherdata | 
 |  |  |             ? JSON.parse(this.ruleForm.otherdata) | 
 |  |  |             : this.variablelist; | 
 |  |  |         }); | 
 |  |  |       } | 
 |  |  |       // å®£æåç±» | 
 |  |  |       getheLibraryAssort({ hetype: 1 }).then((res) => { | 
 |  |  |         this.sortlist = res.rows; | 
 |  |  |         console.log(this.sortlist); | 
 |  |  |       }); | 
 |  |  |       // é¨é¨ | 
 |  |  |       listDept(this.queryParams).then((response) => { | 
 |  |  |         this.deptList = this.handleTree(response.data, "deptId"); | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       // ------------------ | 
 |  |  |  | 
 |  |  |       // let html = | 
 |  |  |       //   '<p>æµè¯</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/è¥å
»æ³µä»ç».mp4"></video><p>æµè¯111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/注å°å¨æ¨æ³¨.mp4"></video><p><br></p>'; | 
 |  |  |       // // html = html.parserdom(this.oldPattern, this.newPattern); | 
 |  |  |       // html = this.parserdom(html); | 
 |  |  |       // console.log(html, "html"); | 
 |  |  |  | 
 |  |  |       // this.loading = false; | 
 |  |  |     }, | 
 |  |  |     // parser | 
 |  |  |     parserdom(html) { | 
 |  |  |       // å建ä¸ä¸ªæ°çDOMè§£æå¨ | 
 |  |  |       var parser = new DOMParser(); | 
 |  |  |       // å°å符串解æä¸ºææ¡£å¯¹è±¡ | 
 |  |  |       var doc = parser.parseFromString(html, "text/html"); | 
 |  |  |  | 
 |  |  |       // å®ä¹è¦æ¿æ¢çæ°æ§URL | 
 |  |  |       var oldUrlBase = "http://192.168.191.181:8095/profile/upload"; | 
 |  |  |       var newUrlBase = "http://218.108.11.22:8093/profile-api/upload"; | 
 |  |  |  | 
 |  |  |       // è·åææçvideoå
ç´  | 
 |  |  |       var videos = doc.querySelectorAll("video"); | 
 |  |  |  | 
 |  |  |       // éåææçvideoå
ç´ å¹¶æ¿æ¢src屿§ | 
 |  |  |       videos.forEach(function (video) { | 
 |  |  |         var src = video.getAttribute("src"); | 
 |  |  |         if (src.startsWith(oldUrlBase)) { | 
 |  |  |           video.setAttribute("src", src.replace(oldUrlBase, newUrlBase)); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       // å°ä¿®æ¹åçææ¡£è½¬æ¢åå符串 | 
 |  |  |       var newContent = doc.body.innerHTML; | 
 |  |  |       return newContent; | 
 |  |  |     }, | 
 |  |  |     submitForm(formName) { | 
 |  |  |       let tgs = []; | 
 |  |  |       this.dynamicTags.forEach((item) => { | 
 |  |  |         tgs.push(item.tagname); | 
 |  |  |       }); | 
 |  |  |       if (this.ruleForm.campus) { | 
 |  |  |         this.ruleForm.campus = this.ruleForm.campus.join(","); | 
 |  |  |       } | 
 |  |  |       this.ruleForm.labelInfo = tgs.length != 0 ? tgs.join(", ") : ""; | 
 |  |  |       this.ruleForm.otherdata = JSON.stringify(this.variablelist); | 
 |  |  |       this.ruleForm.hetype = 1; | 
 |  |  |       console.log(22); | 
 |  |  |       this.ruleForm.suitway = | 
 |  |  |         this.ruleForm.suitway.length != 0 | 
 |  |  |           ? this.ruleForm.suitway.join(",") | 
 |  |  |           : ""; | 
 |  |  |  | 
 |  |  |       addrichText({ | 
 |  |  |         content: this.parserdom(this.content), | 
 |  |  |         fileName: this.generateRandomHtmlFilename(), | 
 |  |  |       }).then((res) => { | 
 |  |  |         this.ruleForm.richText = res.msg; | 
 |  |  |         console.log(this.ruleForm.richText, "this.ruleForm.richText"); | 
 |  |  |         // å¤çå
ç½html | 
 |  |  |         addrichText({ | 
 |  |  |           content: this.content, | 
 |  |  |           fileName: this.generateRandomHtmlFilename(), | 
 |  |  |         }).then((resf) => { | 
 |  |  |           this.ruleForm.htmlRichText = resf.msg.replace( | 
 |  |  |             this.newPattern, | 
 |  |  |             this.oldPattern | 
 |  |  |           ); | 
 |  |  |           console.log(this.ruleForm.htmlRichText, "this.ruleForm.htmlRichText"); | 
 |  |  |  | 
 |  |  |           if (this.id) { | 
 |  |  |             this.ruleForm.isoperation = 2; | 
 |  |  |             compilelibrary(this.ruleForm).then((res) => { | 
 |  |  |               if (res.code == 200) { | 
 |  |  |                 this.$modal.msgSuccess("ç¼è¾æå"); | 
 |  |  |                 this.confirmillness(); | 
 |  |  |                 this.$router.go(-1); | 
 |  |  |               } | 
 |  |  |             }); | 
 |  |  |           } else { | 
 |  |  |             this.ruleForm.isoperation = 1; | 
 |  |  |             compilelibrary(this.ruleForm).then((res) => { | 
 |  |  |               if (res.code == 200) { | 
 |  |  |                 this.$modal.msgSuccess("æ°å¢æå"); | 
 |  |  |                 this.confirmillness(res.data); | 
 |  |  |                 this.$router.go(-1); | 
 |  |  |               } | 
 |  |  |             }); | 
 |  |  |           } | 
 |  |  |         }); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     generateRandomHtmlFilename() { | 
 |  |  |       // çæä¸ä¸ª0å°1ä¹é´çéæºæ°ï¼å¹¶å°å
¶è½¬æ¢ä¸ºå符串 | 
 |  |  |       let randomNumber = Math.random().toString(); | 
 |  |  |       // ç§»é¤åé¢ç0åå°æ°ç¹ | 
 |  |  |       randomNumber = randomNumber.substring(6); | 
 |  |  |       // ç¡®ä¿çæçéæºæ°æ¯ä¸å®é¿åº¦çï¼ä¾å¦8ä½ | 
 |  |  |       while (randomNumber.length < 8) { | 
 |  |  |         randomNumber = "0" + randomNumber; | 
 |  |  |       } | 
 |  |  |       // æ¼æ¥ä¸.htmlåç¼ | 
 |  |  |       return randomNumber + ".html"; | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // ä¿åç¾ç
 | 
 |  |  |     confirmillness(guid) { | 
 |  |  |       this.illnesslist.forEach((item, index) => { | 
 |  |  |         if (guid) { | 
 |  |  |           item.outid = guid; | 
 |  |  |         } else { | 
 |  |  |           console.log(this.ruleForm); | 
 |  |  |           item.outid = this.ruleForm.id; | 
 |  |  |         } | 
 |  |  |         item.icd10name = item.icdname; | 
 |  |  |         item.icd10code = item.icdcode; | 
 |  |  |         item.type = 6; | 
 |  |  |         if (!item.id) { | 
 |  |  |           addtargetillness(item).then((res) => {}); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       this.illnessVisible = false; | 
 |  |  |       this.$modal.msgSuccess("ç¼è¾æå"); | 
 |  |  |     }, | 
 |  |  |     getFileNameFromPath(path) { | 
 |  |  |       const parts = path.split("/"); | 
 |  |  |       return parts[parts.length - 1]; | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¸æ¥ | 
 |  |  |     nextstep() { | 
 |  |  |       if (this.Editprogress <= 1) { | 
 |  |  |         return this.Editprogress++; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¸æ¥ | 
 |  |  |     laststep() { | 
 |  |  |       this.Editprogress = this.Editprogress - 1; | 
 |  |  |     }, | 
 |  |  |     // å
³é | 
 |  |  |     closeFm() { | 
 |  |  |       this.$confirm("éåºä¸ä¼ä¿ç页é¢å
å®¹æ´æ¹, æ¯å¦ç»§ç»?", "æç¤º", { | 
 |  |  |         confirmButtonText: "ç¡®å®", | 
 |  |  |         cancelButtonText: "åæ¶", | 
 |  |  |         type: "warning", | 
 |  |  |       }) | 
 |  |  |         .then(() => { | 
 |  |  |           this.$router.go(-1); | 
 |  |  |         }) | 
 |  |  |         .catch(() => { | 
 |  |  |           this.$message({ | 
 |  |  |             type: "info", | 
 |  |  |             message: "已忶", | 
 |  |  |           }); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     // ç§å®¤å¤ç | 
 |  |  |     Departmenttreatment() { | 
 |  |  |       this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); | 
 |  |  |       const result = this.tempDetpRelevanceslist.map( | 
 |  |  |         (subArr) => subArr[subArr.length - 1] | 
 |  |  |       ); | 
 |  |  |       // idæ°ç»æ¥æ°ç»å¯¹è±¡ | 
 |  |  |       result.forEach((item) => { | 
 |  |  |         const condition = this.ruleForm.tempDetpRelevances.some( | 
 |  |  |           (obj) => obj.deptId === item | 
 |  |  |         ); | 
 |  |  |         if (!condition) { | 
 |  |  |           listDept({ deptId: item }).then((res) => { | 
 |  |  |             console.log("dept"); | 
 |  |  |             res.data[0].type = 2; | 
 |  |  |             this.ruleForm.tempDetpRelevances.push(res.data[0]); | 
 |  |  |           }); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       // æ°ç»å¯¹è±¡æ¥idæ°ç» | 
 |  |  |       this.ruleForm.tempDetpRelevances.forEach((item) => { | 
 |  |  |         const condition = result.some((obj) => obj === item.deptId); | 
 |  |  |         if (!condition) { | 
 |  |  |           const index = this.ruleForm.tempDetpRelevances.indexOf(item); | 
 |  |  |           this.ruleForm.tempDetpRelevances[index].delFlag = 1; | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       setTimeout(() => { | 
 |  |  |         this.submitForm(); | 
 |  |  |       }, 1000); | 
 |  |  |       // this.submitForm(); | 
 |  |  |     }, | 
 |  |  |     // ä¿åé¢ç®ä¿¡æ¯ | 
 |  |  |     Saveproblem() {}, | 
 |  |  |     /** æ¥è¯¢é¢ç®å表 */ | 
 |  |  |  | 
 |  |  |     // æ°å¢åé | 
 |  |  |     addvariable() { | 
 |  |  |       this.variablelist.push({ | 
 |  |  |         variatename: "", | 
 |  |  |         variate: "", | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // å é¤åé | 
 |  |  |     delvariable(item) { | 
 |  |  |       const index = this.variablelist.indexOf(item); | 
 |  |  |       if (index !== -1) { | 
 |  |  |         this.variablelist.splice(index, 1); // ä»ç´¢å¼ä½ç½®å é¤ä¸ä¸ªå
ç´  | 
 |  |  |       } else { | 
 |  |  |         console.log("æªæ¾å°è¯¥å¯¹è±¡"); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     // æ§å¶æä»¶ | 
 |  |  |     handleChange(file, fileList) { | 
 |  |  |       this.fileList = fileList.slice(-3); | 
 |  |  |     }, | 
 |  |  |     // æ ç¾----------------- | 
 |  |  |     gettabList() { | 
 |  |  |       const tagqueryParams = { | 
 |  |  |         pageNum: 1, | 
 |  |  |         pageSize: 1000, | 
 |  |  |         tagcategoryid: "0", | 
 |  |  |       }; | 
 |  |  |       listtag(tagqueryParams).then((response) => { | 
 |  |  |         this.optionstag = response.rows; | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     handleClosetag(tag) { | 
 |  |  |       console.log(tag); | 
 |  |  |       const lindex = this.ruleForm.heLibraryTagList.findIndex( | 
 |  |  |         (item) => item.tagname == tag.tagname | 
 |  |  |       ); | 
 |  |  |       console.log(lindex); | 
 |  |  |       this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); | 
 |  |  |       this.ruleForm.heLibraryTagList[lindex].isoperation = 3; | 
 |  |  |     }, | 
 |  |  |     handleInputConfirm() { | 
 |  |  |       let tagvalue = {}; | 
 |  |  |       let tagname = this.inputValue; | 
 |  |  |       if (tagname) { | 
 |  |  |         listtag({ | 
 |  |  |           pageNum: 1, | 
 |  |  |           pageSize: 1000, | 
 |  |  |           tagcategoryid: "0", | 
 |  |  |           tagname: tagname, | 
 |  |  |         }).then((res) => { | 
 |  |  |           if (res.rows[0]) { | 
 |  |  |             tagvalue = res.rows[0]; | 
 |  |  |             tagvalue.isoperation = 1; | 
 |  |  |           } else { | 
 |  |  |             tagvalue = { | 
 |  |  |               tagname: tagname, | 
 |  |  |               isoperation: 1, | 
 |  |  |             }; | 
 |  |  |           } | 
 |  |  |           this.ruleForm.heLibraryTagList.push(tagvalue); | 
 |  |  |           this.dynamicTags.push(tagvalue); | 
 |  |  |         }); | 
 |  |  |       } | 
 |  |  |       this.inputVisible = false; | 
 |  |  |       this.inputValue = ""; | 
 |  |  |     }, | 
 |  |  |     remoteMethodtag(query) { | 
 |  |  |       if (query !== "") { | 
 |  |  |         this.loading = true; | 
 |  |  |         setTimeout(() => { | 
 |  |  |           this.loading = false; | 
 |  |  |           listtag({ tagname: query, tagcategoryid: "0" }).then((res) => { | 
 |  |  |             this.optionstag = res.rows; | 
 |  |  |           }); | 
 |  |  |         }, 200); | 
 |  |  |       } else { | 
 |  |  |         this.optionstag = []; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     showInput() { | 
 |  |  |       this.inputVisible = true; | 
 |  |  |     }, | 
 |  |  |     // ç¾ç
----------------------- | 
 |  |  |     illnessUpdate() { | 
 |  |  |       if (this.id) { | 
 |  |  |         getillness({ outid: this.$route.query.id, type: 6 }).then((res) => { | 
 |  |  |           this.illnesslist = res.rows; | 
 |  |  |           this.illnesslist.forEach((item) => { | 
 |  |  |             item.icdname = item.icd10name; | 
 |  |  |           }); | 
 |  |  |         }); | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // -------------------------- | 
 |  |  |  | 
 |  |  |     // é¢è§æ¨¡æ¿ | 
 |  |  |     PreviewTemplate() { | 
 |  |  |       this.drawer = true; | 
 |  |  |     }, | 
 |  |  |     resetForm(formName) { | 
 |  |  |       this.$refs[formName].resetFields(); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     //ä¸ä¼ å¾çä¹åasync | 
 |  |  |     beforeEditorUpload(res, file) { | 
 |  |  |       //æ¾ç¤ºä¸ä¼ å¨ç» | 
 |  |  |       this.quillUpdateImg = true; | 
 |  |  |       //  const res1 = await uploadImage() | 
 |  |  |       // console.log(res1,'====='); | 
 |  |  |       // this.$emit('before',res, file) | 
 |  |  |       console.log(res); | 
 |  |  |       console.log(file); | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¼ å¾çæå | 
 |  |  |     uploadEditorSuccess(res, file) { | 
 |  |  |       console.log("ä¸ä¼ æå"); | 
 |  |  |       //æ¼æ¥åºä¸ä¼ çå¾ç卿å¡å¨ç宿´å°å | 
 |  |  |       let imgUrl = res.url; | 
 |  |  |       console.log(res.url); | 
 |  |  |  | 
 |  |  |       imgUrl = imgUrl.replace(this.newPattern, this.oldPattern); | 
 |  |  |       console.log(imgUrl, "imgUrl"); | 
 |  |  |  | 
 |  |  |       let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1); | 
 |  |  |       this.fileName = this.getFileNameFromPath(res.url); | 
 |  |  |  | 
 |  |  |       // è·å坿æ¬ç»ä»¶å®ä¾ | 
 |  |  |       let quill = this.$refs.customQuillEditor.quill; | 
 |  |  |       // è·åå
æ æå¨ä½ç½® | 
 |  |  |       let length = quill.getSelection().index; | 
 |  |  |       // æå
¥å¾ç||è§é¢  res.info为æå¡å¨è¿åçå¾çå°å | 
 |  |  |       if (type == "mp4" || type == "MP4" || type == "avi" || type == "AVI") { | 
 |  |  |         window.jsValue = imgUrl; | 
 |  |  |         quill.insertEmbed(length, "video", imgUrl); | 
 |  |  |       } else { | 
 |  |  |         quill.insertEmbed(length, "image", imgUrl); | 
 |  |  |       } | 
 |  |  |       // è°æ´å
æ å°æå | 
 |  |  |       quill.setSelection(length + 1); | 
 |  |  |       //åæ¶ä¸ä¼ å¨ç» | 
 |  |  |       this.quillUpdateImg = false; | 
 |  |  |     }, | 
 |  |  |     // å¤±å»ç¦ç¹äºä»¶ | 
 |  |  |     onEditorBlur(e) { | 
 |  |  |       console.log("onEditorBlur: ", e); | 
 |  |  |     }, | 
 |  |  |     // è·å¾ç¦ç¹äºä»¶ | 
 |  |  |     onEditorFocus(e) { | 
 |  |  |       console.log("onEditorFocus: ", e); | 
 |  |  |     }, | 
 |  |  |     // å
容æ¹åäºä»¶ | 
 |  |  |     onEditorChange(e) { | 
 |  |  |       console.log("onEditorChange: ", e); | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¼ (æä»¶)å¾ç失败 | 
 |  |  |     uploadEditorError(res, file) { | 
 |  |  |       console.log(res, "word"); | 
 |  |  |       console.log(file, "word"); | 
 |  |  |       //é¡µé¢æç¤º | 
 |  |  |       this.$message.error("ä¸ä¼ å¾ç失败"); | 
 |  |  |       //åæ¶ä¸ä¼ å¨ç» | 
 |  |  |       this.quillUpdateImg = false; | 
 |  |  |     }, | 
 |  |  |     //ä¸ä¼ ç»ä»¶è¿åçç»æ | 
 |  |  |     uploadResult: function (res) { | 
 |  |  |       this.uploadUrlPath = res; | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¼ (æä»¶)å¾ç失败 | 
 |  |  |     uploadEditorErrorword(res, file) { | 
 |  |  |       console.log(res); | 
 |  |  |       console.log(file); | 
 |  |  |       //é¡µé¢æç¤º | 
 |  |  |       this.$message.error("ä¸ä¼ å¾ç失败"); | 
 |  |  |       //åæ¶ä¸ä¼ å¨ç» | 
 |  |  |       this.quillUpdateImg = false; | 
 |  |  |     }, | 
 |  |  |     //ä¸ä¼ å¾çä¹åasync | 
 |  |  |     beforeEditorUploadword(res, file) { | 
 |  |  |       //æ¾ç¤ºä¸ä¼ å¨ç» | 
 |  |  |       this.quillUpdateImg = true; | 
 |  |  |       //  const res1 = await uploadImage() | 
 |  |  |       // console.log(res1,'====='); | 
 |  |  |       // this.$emit('before',res, file) | 
 |  |  |       console.log(res); | 
 |  |  |       console.log(file); | 
 |  |  |     }, | 
 |  |  |     // ä¸ä¼ wordæå | 
 |  |  |     uploadEditorSuccessword(res, file) { | 
 |  |  |       console.log("ä¸ä¼ wordæä»¶æå"); | 
 |  |  |       console.log(res, file, "word"); | 
 |  |  |       let fileurl = res.url.replace(this.newPattern, this.oldPattern); | 
 |  |  |       axios | 
 |  |  |         .get(fileurl) | 
 |  |  |         .then((response) => { | 
 |  |  |           console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 | 
 |  |  |           this.$nextTick(() => { | 
 |  |  |             this.content = response.data; | 
 |  |  |           }); | 
 |  |  |           this.fileName = this.getFileNameFromPath(response.url); | 
 |  |  |           console.log(this.fileName, "this.fileName"); | 
 |  |  |         }) | 
 |  |  |         .catch((error) => { | 
 |  |  |           console.error("Failed to fetch file:", error); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     Getmissioncontent(url) { | 
 |  |  |       axios | 
 |  |  |         .get(url) | 
 |  |  |         .then((response) => { | 
 |  |  |           console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 | 
 |  |  |           this.content = response.data; | 
 |  |  |           this.fileName = this.getFileNameFromPath(response.url); | 
 |  |  |           console.log(this.fileName, "this.fileName"); | 
 |  |  |         }) | 
 |  |  |         .catch((error) => { | 
 |  |  |           console.error("Failed to fetch file:", error); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     // å¤çurl | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  | <style src="@wangeditor/editor/dist/css/style.css"></style> | 
 |  |  | <style src="@/assets/styles/global.css"></style> | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | .sidecolumn { | 
 |  |  |   // width: 300px; | 
 |  |  |   // min-height: 100vh; | 
 |  |  |   // text-align: center; | 
 |  |  |   //   display: flex; | 
 |  |  |   //   margin-top: 20px; | 
 |  |  |   margin: 20px; | 
 |  |  |   margin-bottom: 0; | 
 |  |  |   padding: 20px; | 
 |  |  |   background: #edf1f7; | 
 |  |  |   border: 1px solid #dcdfe6; | 
 |  |  |   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), | 
 |  |  |     0 0 6px 0 rgba(0, 0, 0, 0.04); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .leftvlue { | 
 |  |  |   //   display: flex; | 
 |  |  |   //   flex: 1; | 
 |  |  |   margin: 20px; | 
 |  |  |   padding: 30px; | 
 |  |  |   background: #ffff; | 
 |  |  |   border: 1px solid #dcdfe6; | 
 |  |  |   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), | 
 |  |  |     0 0 6px 0 rgba(0, 0, 0, 0.04); | 
 |  |  |  | 
 |  |  |   .mulsz { | 
 |  |  |     font-size: 20px; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .leftvlue-jbxx { | 
 |  |  |     font-size: 24px; | 
 |  |  |     height: 30px; | 
 |  |  |     border-left: 3px solid #41a1be; | 
 |  |  |     padding-left: 3px; | 
 |  |  |  | 
 |  |  |     span { | 
 |  |  |       position: absolute; | 
 |  |  |       right: 80px; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .demo-cascader { | 
 |  |  |     margin-right: 20px; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .PreviewTemplate { | 
 |  |  |     color: #02a7f0; | 
 |  |  |     cursor: pointer; | 
 |  |  |     font-size: 20px; | 
 |  |  |     margin: 0 20px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .xinz-inf { | 
 |  |  |   font-size: 18px; | 
 |  |  |   white-space: nowrap; | 
 |  |  |   overflow: hidden; | 
 |  |  |   text-overflow: ellipsis; | 
 |  |  |  | 
 |  |  |   line-height: 48px; | 
 |  |  |  | 
 |  |  |   .el-tag + .el-tag { | 
 |  |  |     margin-left: 10px; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .button-new-tag { | 
 |  |  |     margin-left: 10px; | 
 |  |  |     height: 32px; | 
 |  |  |     line-height: 30px; | 
 |  |  |     padding-top: 0; | 
 |  |  |     padding-bottom: 0; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .input-new-tag { | 
 |  |  |     width: 90px; | 
 |  |  |     margin-left: 10px; | 
 |  |  |     vertical-align: bottom; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .preview-left { | 
 |  |  |   margin: 20px; | 
 |  |  |   //   margin: 20px; | 
 |  |  |   padding: 30px; | 
 |  |  |   background: #ffff; | 
 |  |  |   border: 1px solid #dcdfe6; | 
 |  |  |   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), | 
 |  |  |     0 0 6px 0 rgba(0, 0, 0, 0.04); | 
 |  |  |  | 
 |  |  |   .topic-dev { | 
 |  |  |     margin-bottom: 25px; | 
 |  |  |     font-size: 20px !important; | 
 |  |  |  | 
 |  |  |     .dev-text { | 
 |  |  |       margin-bottom: 10px; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .addtopic { | 
 |  |  |   margin-top: 30px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .presentation { | 
 |  |  |   margin: 20px 0; | 
 |  |  |   display: flex; | 
 |  |  |  | 
 |  |  |   .presentation-left { | 
 |  |  |     width: 50%; | 
 |  |  |     height: 500px; | 
 |  |  |  | 
 |  |  |     .button-textxg { | 
 |  |  |       color: #024df0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .button-textsc { | 
 |  |  |       color: #f52727; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .presentation-right { | 
 |  |  |     width: 50%; | 
 |  |  |     height: 500px; | 
 |  |  |     padding: 20px; | 
 |  |  |     font-size: 18px; | 
 |  |  |     border: 1px solid #909091; | 
 |  |  |  | 
 |  |  |     span { | 
 |  |  |       padding: 0 35px; | 
 |  |  |       margin-right: 10px; | 
 |  |  |       border-bottom: 1px solid #909091; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .headline { | 
 |  |  |       font-size: 20px; | 
 |  |  |       border-left: 3px solid #41a1be; | 
 |  |  |       padding-left: 5px; | 
 |  |  |       margin: 15px 0; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep .addtopic-input { | 
 |  |  |   input { | 
 |  |  |     background: #02a7f0; | 
 |  |  |     color: #edf1f7; | 
 |  |  |     width: 150px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep.el-step.is-vertical .el-step__title { | 
 |  |  |   font-size: 25px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep.el-input--medium { | 
 |  |  |   font-size: 18px !important; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep.ruleFormaa.el-select { | 
 |  |  |   display: inline-block; | 
 |  |  |   position: relative; | 
 |  |  |   width: 700px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .el-select__tags { | 
 |  |  |   font-size: 20px; | 
 |  |  |   max-width: 888px !important; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep.el-radio__inner { | 
 |  |  |   width: 22px; | 
 |  |  |   height: 22px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | // ::v-deep.topic-dev.el-radio__label { | 
 |  |  | //   font-size: 24px; | 
 |  |  | // } | 
 |  |  | ::v-deep.el-radio-group { | 
 |  |  |   span { | 
 |  |  |     font-size: 24px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | ::v-deep.el-checkbox-group { | 
 |  |  |   span { | 
 |  |  |     font-size: 24px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> | 
 
 |  |  | 
 |  |  |           </el-form-item> | 
 |  |  |         </el-form> | 
 |  |  |       </div> | 
 |  |  |       <!-- å®£æå
容 --> | 
 |  |  |     <!-- å®£æå
容 --> | 
 |  |  |       <div v-if="Editprogress == 2"> | 
 |  |  |         <el-row :gutter="20"> | 
 |  |  |           <el-col :span="4"> | 
 |  |  | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |  | 
 |  |  |         <div> | 
 |  |  |           <el-form | 
 |  |  |             :model="ruleForm" | 
 |  |  |             :rules="rules" | 
 |  |  |             ref="ruleForm" | 
 |  |  |             label-width="100px" | 
 |  |  |             class="demo-ruleForm" | 
 |  |  |           > | 
 |  |  |             <!-- <el-row :gutter="20"> | 
 |  |  |               <el-col :span="12"> | 
 |  |  |                 <el-form-item label="èµæå½¢å¼" prop="region"> | 
 |  |  |                   <el-select | 
 |  |  |                     v-model="ruleForm.shape" | 
 |  |  |                     placeholder="è¯·éæ©å
容形å¼" | 
 |  |  |                   > | 
 |  |  |                     <el-option | 
 |  |  |                       v-for="item in xjxsoptions" | 
 |  |  |                       :key="item.value" | 
 |  |  |                       :label="item.label" | 
 |  |  |                       :value="item.value" | 
 |  |  |                     > | 
 |  |  |                     </el-option> | 
 |  |  |                   </el-select> | 
 |  |  |                 </el-form-item> | 
 |  |  |               </el-col> | 
 |  |  |               <el-col :span="12"> --> | 
 |  |  |  | 
 |  |  |             <!-- </el-col> | 
 |  |  |             </el-row> --> | 
 |  |  |           </el-form> | 
 |  |  |         </div> | 
 |  |  |         <!-- <div> | 
 |  |  |           <div id="quillEditorQiniu"> | 
 |  |  |             <el-upload | 
 |  |  |               class="avatar-uploader" | 
 |  |  |               :action="uploadImgUrl" | 
 |  |  |               :accept="'image/*,video/*'" | 
 |  |  |               :show-file-list="false" | 
 |  |  |               :on-success="uploadEditorSuccess" | 
 |  |  |               :on-error="uploadEditorError" | 
 |  |  |               :before-upload="beforeEditorUpload" | 
 |  |  |               :headers="headers" | 
 |  |  |             > | 
 |  |  |             </el-upload> | 
 |  |  |             <quill-editor | 
 |  |  |               class="editor" | 
 |  |  |               v-model="content" | 
 |  |  |               ref="customQuillEditor" | 
 |  |  |               :options="editorOption" | 
 |  |  |               @blur="onEditorBlur" | 
 |  |  |               @focus="onEditorFocus" | 
 |  |  |               @change="onEditorChange" | 
 |  |  |             > | 
 |  |  |             </quill-editor> | 
 |  |  |           </div> | 
 |  |  |         </div> --> | 
 |  |  |         <!-- æ°ç»ä»¶ --> | 
 |  |  |         <!-- WangEditor å¯ææ¬ç¼è¾å¨ --> | 
 |  |  |         <div style="border: 1px solid #ccc; margin: 10px"> | 
 |  |  |           <Toolbar | 
 |  |  |             style="border-bottom: 1px solid #ccc" | 
 |  |  |             :editor="editor" | 
 |  |  |             :editor="editorRef" | 
 |  |  |             :defaultConfig="toolbarConfig" | 
 |  |  |             :mode="modes" | 
 |  |  |             :mode="mode" | 
 |  |  |           /> | 
 |  |  |           <Editor | 
 |  |  |             style="height: 500px; overflow-y: hidden" | 
 |  |  |             v-model="content" | 
 |  |  |             style="height: 800px; overflow-y: hidden" | 
 |  |  |             v-model:html="content" | 
 |  |  |             :defaultConfig="editorConfig" | 
 |  |  |             :mode="modes" | 
 |  |  |             @onCreated="onCreated" | 
 |  |  |             :mode="mode" | 
 |  |  |             @onCreated="handleEditorCreated" | 
 |  |  |           /> | 
 |  |  |         </div> | 
 |  |  |  | 
 |  |  |         <div> | 
 |  |  |           <el-button @click="laststep('ruleForm')">ä¸ä¸æ¥</el-button> | 
 |  |  |           <el-button type="success" @click="Departmenttreatment('ruleForm')" | 
 |  |  |             >ä¿å</el-button | 
 |  |  |           > | 
 |  |  |           <el-button type="warning" @click="Departmenttreatment('ruleForm')" | 
 |  |  |             >å¦åæ°çæ¬</el-button | 
 |  |  |           > | 
 |  |  |           <el-button type="success" @click="Departmenttreatment('ruleForm')">ä¿å</el-button> | 
 |  |  |           <el-button type="warning" @click="Departmenttreatment('ruleForm')">å¦åæ°çæ¬</el-button> | 
 |  |  |           <el-button type="info" @click="closeFm('ruleForm')">å
³é</el-button> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import { quillEditor } from "vue-quill-editor"; | 
 |  |  | import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; | 
 |  |  | import '@wangeditor/editor/dist/css/style.css'; | 
 |  |  | import axios from "axios"; | 
 |  |  | import { getToken } from "@/utils/auth"; | 
 |  |  |  | 
 |  |  | import { | 
 |  |  |   getheLibraryAssort, | 
 |  |  |   delheLibraryAssort, | 
 |  |  |   addheLibraryAssort, | 
 |  |  |   addtargetillness, | 
 |  |  |   getlibrarylist, | 
 |  |  |   dellibraryinfo, | 
 |  |  |   deltargetillness, | 
 |  |  |   compilelibrary, | 
 |  |  |   addrichText, | 
 |  |  |   getlibraryinfo, | 
 |  |  |   getillnesslist, | 
 |  |  |   illnesslistget, | 
 |  |  |   getillness, | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import OptionalForm from "@/components/OptionalForm"; //æ£åç»ä»¶ | 
 |  |  |  | 
 |  |  | import OptionalForm from "@/components/OptionalForm"; | 
 |  |  | import { listDept } from "@/api/system/dept"; | 
 |  |  | // import * as Quill from "quill"; | 
 |  |  | import Quill from "quill"; | 
 |  |  | import { listtag } from "@/api/system/label"; | 
 |  |  | import store from "@/store"; | 
 |  |  |  | 
 |  |  | // è¿éå¼å
¥ä¿®æ¹è¿çvideo模å并注å | 
 |  |  | import Video from "./video"; | 
 |  |  | Quill.register(Video, true); | 
 |  |  | //è·åç»å½tokenï¼å¼å
¥æä»¶ï¼å¦æåªæ¯ç®åæµè¯ï¼æ²¡æä¸ä¼ æä»¶æ¯å¦ç»å½çéå¶çè¯ï¼ | 
 |  |  | //è¿ä¸ªtokenå¯ä»¥ä¸ç¨è·åï¼æä»¶å¯ä»¥ä¸å¼å
¥ï¼æä¸é¢å¯¹åºçä¸ä¼ æä»¶æºå¸¦è¯·æ±å¤´  :headers="headers" è¿ä¸ªä»£ç å æå³å¯ | 
 |  |  | import { getToken } from "@/utils/auth"; | 
 |  |  | const toolbarOptions = [ | 
 |  |  |   ["bold", "italic", "underline", "strike"], // toggled buttons | 
 |  |  |   ["blockquote", "code-block"], | 
 |  |  |  | 
 |  |  |   [{ header: 1 }, { header: 2 }], // custom button values | 
 |  |  |   [{ list: "ordered" }, { list: "bullet" }], | 
 |  |  |   [{ script: "sub" }, { script: "super" }], // superscript/subscript | 
 |  |  |   [{ indent: "-1" }, { indent: "+1" }], // outdent/indent | 
 |  |  |   [{ direction: "rtl" }], // text direction | 
 |  |  |  | 
 |  |  |   [{ size: ["small", false, "large", "huge"] }], // custom dropdown | 
 |  |  |   [{ header: [1, 2, 3, 4, 5, 6, false] }], | 
 |  |  |  | 
 |  |  |   [{ color: [] }, { background: [] }], // dropdown with defaults from theme | 
 |  |  |   [{ font: [] }], | 
 |  |  |   [{ align: [] }], | 
 |  |  |   ["link", "image", "video"], | 
 |  |  |   ["clean"], // remove formatting button | 
 |  |  | ]; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: "aEducationinfo", | 
 |  |  |   components: { OptionalForm, Editor, Toolbar }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       editor: null, | 
 |  |  |       content: "<p>hello</p>", | 
 |  |  |       toolbarConfig: {}, | 
 |  |  |  // ç¼è¾å¨å®ä¾ | 
 |  |  |       editorRef: null, | 
 |  |  |  | 
 |  |  |       // ç¼è¾å¨å
容 | 
 |  |  |       content: "<p>æµè¯</p>", | 
 |  |  |  | 
 |  |  |       // ç¼è¾å¨æ¨¡å¼ | 
 |  |  |       mode: "default", | 
 |  |  |  | 
 |  |  |       // å·¥å
·æ é
ç½® | 
 |  |  |       toolbarConfig: { | 
 |  |  |         excludeKeys: [ | 
 |  |  |           "group-video", | 
 |  |  |           "insertVideo", | 
 |  |  |           "uploadVideo", | 
 |  |  |           "emotion", | 
 |  |  |           "codeBlock", | 
 |  |  |         ] | 
 |  |  |       }, | 
 |  |  |  | 
 |  |  |       // ç¼è¾å¨é
ç½® | 
 |  |  |       editorConfig: { | 
 |  |  |         placeholder: "请è¾å
¥å
容...", | 
 |  |  |         menus: [ | 
 |  |  |           "head", | 
 |  |  |           "bold", | 
 |  |  |           "italic", | 
 |  |  |           "underline", | 
 |  |  |           "image", | 
 |  |  |           "link", | 
 |  |  |           "list", | 
 |  |  |           "undo", | 
 |  |  |           "redo", | 
 |  |  |           "file", // æ·»å èªå®ä¹æä»¶ä¸ä¼ èå | 
 |  |  |         ], | 
 |  |  |         uploadImgServer: process.env.VUE_APP_BASE_API + "/common/uploadSort", // å¾çä¸ä¼ æ¥å£ | 
 |  |  |         uploadImgHeaders: { | 
 |  |  |           Authorization: "Bearer " + getToken(), | 
 |  |  |         }, // èªå®ä¹ä¸ä¼ ç headers | 
 |  |  |         uploadImgParams: { key: "value" }, // èªå®ä¹ä¸ä¼ çåæ° | 
 |  |  |         uploadImgMaxSize: 2 * 1024 * 1024, // å¾çæå¤§å¤§å°ï¼åä½ Byte | 
 |  |  |         uploadImgMaxLength: 1, // ä¸æ¬¡æå¤ä¸ä¼ å¾çæ°é | 
 |  |  |         uploadImgTimeout: 3 * 60 * 1000, // è¶
æ¶æ¶é´ï¼åä½ ms | 
 |  |  |         uploadImgHooks: { | 
 |  |  |           customInsert: (insertImgFn, result) => { | 
 |  |  |             const url = result.url; // è·åå¾çå°å | 
 |  |  |             insertImgFn(url); // æå
¥å¾ç | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |         customMenus: { | 
 |  |  |           file: { | 
 |  |  |             tip: "ä¸ä¼ æä»¶", | 
 |  |  |             click: (editor) => { | 
 |  |  |               const input = document.createElement("input"); | 
 |  |  |               input.type = "file"; | 
 |  |  |               input.accept = | 
 |  |  |                 "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // æ¯æçæä»¶ç±»å | 
 |  |  |               input.onchange = (e) => { | 
 |  |  |                 const file = e.target.files[0]; | 
 |  |  |                 if (!file) return; | 
 |  |  |         placeholder: "请è¾å
¥å®£æå
容...", | 
 |  |  |         MENU_CONF: { | 
 |  |  |           uploadImage: { | 
 |  |  |             server: process.env.VUE_APP_BASE_API + "/common/uploadSort", | 
 |  |  |             fieldName: "file", | 
 |  |  |             maxFileSize: 2 * 1024 * 1024, | 
 |  |  |             maxNumberOfFiles: 1, | 
 |  |  |             allowedFileTypes: ["image/*"], | 
 |  |  |             headers: { | 
 |  |  |               Authorization: "Bearer " + getToken() | 
 |  |  |             }, | 
 |  |  |             customUpload: async (file, insertFn) => { | 
 |  |  |               try { | 
 |  |  |                 const formData = new FormData(); | 
 |  |  |                 formData.append("file", file); | 
 |  |  |  | 
 |  |  |                 // ç¡®ä¿ process.env.VUE_APP_BASE_API æ¯æ£ç¡®ç | 
 |  |  |                 const uploadUrl = | 
 |  |  |                   process.env.VUE_APP_BASE_API + "/common/uploadSort"; | 
 |  |  |                 axios | 
 |  |  |                   .post(uploadUrl, formData, { | 
 |  |  |                 const response = await axios.post( | 
 |  |  |                   process.env.VUE_APP_BASE_API + "/common/uploadSort", | 
 |  |  |                   formData, | 
 |  |  |                   { | 
 |  |  |                     headers: { | 
 |  |  |                       Authorization: "Bearer " + getToken(), | 
 |  |  |                     }, | 
 |  |  |                   }) | 
 |  |  |                   .then((res) => { | 
 |  |  |                     const url = res.data.url; // è·åæä»¶å°å | 
 |  |  |                     // æå
¥æä»¶é¾æ¥ä½ä¸ºæ®éææ¬ | 
 |  |  |                     editor.txt.append(url + " "); | 
 |  |  |                     // æè
æå
¥æä»¶é¾æ¥ä½ä¸ºè¶
龿¥ | 
 |  |  |                     // editor.cmd.do('insertLink', { name: 'æä»¶é¾æ¥', url: url }); | 
 |  |  |                   }) | 
 |  |  |                   .catch((err) => { | 
 |  |  |                     console.error("æä»¶ä¸ä¼ å¤±è´¥", err); | 
 |  |  |                   }); | 
 |  |  |               }; | 
 |  |  |               input.click(); | 
 |  |  |             }, | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |                       "Content-Type": "multipart/form-data", | 
 |  |  |                       Authorization: "Bearer " + getToken() | 
 |  |  |                     } | 
 |  |  |                   } | 
 |  |  |                 ); | 
 |  |  |  | 
 |  |  |                 if (response.data && response.data.url) { | 
 |  |  |                   let imgUrl = response.data.url; | 
 |  |  |                   imgUrl = imgUrl.replace( | 
 |  |  |                     "http://218.108.11.22:8093/profile-api/upload", | 
 |  |  |                     "http://192.168.191.181:8095/profile/upload" | 
 |  |  |                   ); | 
 |  |  |                   insertFn(imgUrl); | 
 |  |  |                 } | 
 |  |  |               } catch (error) { | 
 |  |  |                 console.error("å¾çä¸ä¼ å¤±è´¥", error); | 
 |  |  |                 this.$message.error("å¾çä¸ä¼ å¤±è´¥"); | 
 |  |  |               } | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       }, | 
 |  |  |       modes: "default", // or 'simple' | 
 |  |  |       // ä¸ä¼ é
ç½® | 
 |  |  |       headers: { | 
 |  |  |         Authorization: "Bearer " + getToken(), | 
 |  |  |         Authorization: "Bearer " + getToken() | 
 |  |  |       }, | 
 |  |  |       uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort", | 
 |  |  |       uploadImgUrlword: process.env.VUE_APP_BASE_API + "/common/uploadShow", | 
 |  |  |       uploadUrlPath: "没ææä»¶ä¸ä¼ ", | 
 |  |  |       quillUpdateImg: false, | 
 |  |  |       fileList: [ | 
 |  |  |         { | 
 |  |  |           name: "food.jpeg", | 
 |  |  |           url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |           name: "food2.jpeg", | 
 |  |  |           url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", | 
 |  |  |         }, | 
 |  |  |       ], | 
 |  |  |       content: `<p>æµè¯</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/è¥å
»æ³µæä½è§è.mp4"></video><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/注å°å¨æ¨æ³¨.mp4"></video><p>321</p>"`, //æç»ä¿åçå
容 | 
 |  |  |       fileName: "", //æä»¶å | 
 |  |  |  | 
 |  |  |       // é¡µé¢ç¶æ | 
 |  |  |       Editprogress: 1, | 
 |  |  |       loading: false, | 
 |  |  |  | 
 |  |  |       // è¡¨åæ°æ® | 
 |  |  |       ruleForm: { | 
 |  |  |         campus: [], | 
 |  |  |         heLibraryTagList: [], | 
 |  |  |         tempDetpRelevances: [], | 
 |  |  |         version: "1.0.1", | 
 |  |  |         preachname: "", | 
 |  |  |         preachcontent: "", | 
 |  |  |         isAvailable: "", | 
 |  |  |         suitway: [] | 
 |  |  |       }, | 
 |  |  |  | 
 |  |  |       // å
¶ä»æ°æ® | 
 |  |  |       dynamicTags: [], | 
 |  |  |       sortlist: [], | 
 |  |  |       courtyardlist: [], | 
 |  |  |       illnesslist: [], | 
 |  |  |       deptList: [], | 
 |  |  |       tempDetpRelevanceslist: [], | 
 |  |  |       variablelist: [ | 
 |  |  |         { variatename: "å§å", variate: "${name}", default: 1 }, | 
 |  |  |         { variatename: "çµè¯", variate: "${phone}", default: 1 }, | 
 |  |  |         { variatename: "ç
æ
", variate: "${illness}", default: 1 } | 
 |  |  |       ], | 
 |  |  |  | 
 |  |  |       props: { | 
 |  |  |         multiple: true, | 
 |  |  |         value: "deptId", | 
 |  |  |         label: "deptName" | 
 |  |  |       }, | 
 |  |  |       fileName: "", //æä»¶å | 
 |  |  |       inputVisible: false, | 
 |  |  |       illnessVisible: false, | 
 |  |  |       dialogVisiblepatient: false, //éç¨ç¾ç
çªå£ | 
 |  |  |       inputValue: "", | 
 |  |  |       // å¯ææ¬ | 
 |  |  |       editorOption: { | 
 |  |  |         placeholder: "ä½ æ³è¯´ä»ä¹ï¼", | 
 |  |  |         modules: { | 
 |  |  |           imageResize: { | 
 |  |  |             displayStyles: { | 
 |  |  |               backgroundColor: "black", | 
 |  |  |               border: "none", | 
 |  |  |               color: "white", | 
 |  |  |             }, | 
 |  |  |             modules: ["Resize", "DisplaySize", "Toolbar"], | 
 |  |  |           }, | 
 |  |  |           toolbar: { | 
 |  |  |             container: toolbarOptions, // å·¥å
·æ  | 
 |  |  |             handlers: { | 
 |  |  |               image: function (value) { | 
 |  |  |                 if (value) { | 
 |  |  |                   document | 
 |  |  |                     .querySelector("#quillEditorQiniu .avatar-uploader input") | 
 |  |  |                     .click(); | 
 |  |  |                 } else { | 
 |  |  |                   this.quill.format("image", false); | 
 |  |  |                 } | 
 |  |  |               }, | 
 |  |  |               video: function (value) { | 
 |  |  |                 if (value) { | 
 |  |  |                   document | 
 |  |  |                     .querySelector("#quillEditorQiniu .avatar-uploader input") | 
 |  |  |                     .click(); | 
 |  |  |                 } else { | 
 |  |  |                   this.quill.format("video", false); | 
 |  |  |                 } | 
 |  |  |               }, | 
 |  |  |             }, | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |       }, | 
 |  |  |  | 
 |  |  |       sidecolumnrabs: "left", //æ¹å | 
 |  |  |       Editprogress: 1, //ç¼è¾è¿åº¦ | 
 |  |  |       currentVersion: "1.2.3", //å½åçæ¬ | 
 |  |  |       loading: false, // é®ç½©å± | 
 |  |  |       drawer: false, //æ§å¶å±å¼ | 
 |  |  |       radio: "false", //åéé¢éä¸ | 
 |  |  |       radios: [], //å¤éé¢éä¸ | 
 |  |  | 
 |  |  |       total: 1, | 
 |  |  |       hetype: "", | 
 |  |  |       id: null, | 
 |  |  |       ruleForm: { | 
 |  |  |         campus: [], | 
 |  |  |         heLibraryTagList: [], | 
 |  |  |         tempDetpRelevances: [], | 
 |  |  |         version: "1.0.1", | 
 |  |  |       }, | 
 |  |  |       rules: {}, | 
 |  |  |       rulesa: {}, | 
 |  |  |       mode: [], | 
 |  |  |       editableTabs: [], | 
 |  |  |       sortlist: [], | 
 |  |  |       usable: [], | 
 |  |  |       courtyardlist: [], | 
 |  |  |       precedencetype: [], | 
 |  |  |       optionsillness: [], | 
 |  |  |       illnesslistapi: [], | 
 |  |  |       illnesslist: [], | 
 |  |  |       options: [], | 
 |  |  |       optionstag: [], | 
 |  |  |       deptList: [], | 
 |  |  |       tempDetpRelevanceslist: [], | 
 |  |  |       props: { multiple: true, value: "deptId", label: "deptName" }, | 
 |  |  |       // å
ç½çé¨åï¼æä»¶ï¼ | 
 |  |  |       oldPattern: "http://192.168.191.181:8095/profile/upload", | 
 |  |  |       // å
ç½çé¨åï¼æä»¶ï¼ | 
 |  |  | 
 |  |  |       ], | 
 |  |  |       addvalue: "æ·»å é¢ç®", | 
 |  |  |  | 
 |  |  |       variablelist: [ | 
 |  |  |         { variatename: "å§å", variate: "${name}", default: 1 }, | 
 |  |  |         { variatename: "çµè¯", variate: "${phone}", default: 1 }, | 
 |  |  |         { variatename: "ç
æ
", variate: "${illness}", default: 1 }, | 
 |  |  |       ], | 
 |  |  |  | 
 |  |  |       // æ¥è¯¢åæ° | 
 |  |  |       queryParams: { | 
 |  |  |         pageNum: 1, | 
 |  |  | 
 |  |  |     this.courtyardlist = store.getters.courtyardlist; | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     content(newVal, oldVal) { | 
 |  |  |       //this.$emit('input', newVal); | 
 |  |  |       console.log(newVal, "A"); | 
 |  |  |       console.log(oldVal, "B"); | 
 |  |  |     }, | 
 |  |  |     // content(newVal, oldVal) { | 
 |  |  |     //   //this.$emit('input', newVal); | 
 |  |  |     //   console.log(newVal, "A"); | 
 |  |  |     //   console.log(oldVal, "B"); | 
 |  |  |     // }, | 
 |  |  |     content(newVal) { | 
 |  |  |       // å
容ååæ¶è§¦åï¼å¯ä»¥å¨è¿éå¤çèªå¨ä¿åçé»è¾ | 
 |  |  |       this.$emit('content-change', newVal) | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   beforeDestroy() { | 
 |  |  |     const editor = this.editor; | 
 |  |  | 
 |  |  |     onCreated(editor) { | 
 |  |  |       this.editor = Object.seal(editor); // ä¸å®è¦ç¨ Object.seal()ï¼å¦å伿¥é | 
 |  |  |     }, | 
 |  |  |     // ç¼è¾å¨å建åè° | 
 |  |  |    handleEditorCreated(editor) { | 
 |  |  |       this.editorRef = editor; | 
 |  |  |       console.log("ç¼è¾å¨å·²å建", editor); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |    // éæ¯ç¼è¾å¨ | 
 |  |  |     destroyEditor() { | 
 |  |  |       if (this.editorRef) { | 
 |  |  |         this.editorRef.destroy(); | 
 |  |  |         this.editorRef = null; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // è·åå
容HTML | 
 |  |  |     getEditorContent() { | 
 |  |  |       return this.content; | 
 |  |  |     }, | 
 |  |  |     // --------------------------------- | 
 |  |  |     processElement(element) { | 
 |  |  |       return { ...element, isoperation: null }; | 
 |  |  | 
 |  |  |           console.error("Failed to fetch file:", error); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     // Getmissioncontent(url) { | 
 |  |  |     //   axios | 
 |  |  |     //     .get(url) | 
 |  |  |     //     .then((response) => { | 
 |  |  |     //       console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 | 
 |  |  |     //       this.content = response.data; | 
 |  |  |     //       this.fileName = this.getFileNameFromPath(response.url); | 
 |  |  |     //       console.log(this.fileName, "this.fileName"); | 
 |  |  |     //     }) | 
 |  |  |     //     .catch((error) => { | 
 |  |  |     //       console.error("Failed to fetch file:", error); | 
 |  |  |     //     }); | 
 |  |  |     // }, | 
 |  |  |     // è·åè¿ç¨å
容 | 
 |  |  |     Getmissioncontent(url) { | 
 |  |  |       axios | 
 |  |  |         .get(url) | 
 |  |  |       axios.get(url) | 
 |  |  |         .then((response) => { | 
 |  |  |           console.log(response.data, "æ°æ®"); // è¾åºè·åå°çæä»¶å
容 | 
 |  |  |           this.content = response.data; | 
 |  |  |           this.fileName = this.getFileNameFromPath(response.url); | 
 |  |  |           console.log(this.fileName, "this.fileName"); | 
 |  |  |         }) | 
 |  |  |         .catch((error) => { | 
 |  |  |           console.error("Failed to fetch file:", error); | 
 |  |  |           console.error("è·åå
容失败:", error); | 
 |  |  |         }); | 
 |  |  |     }, | 
 |  |  |     // å¤çurl | 
 |  |  |   }, | 
 |  |  |   // çå½å¨æé©å | 
 |  |  |   beforeUnmount() { | 
 |  |  |     this.destroyEditor() | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  | <style src="@wangeditor/editor/dist/css/style.css"></style> | 
 |  |  | <style src="@/assets/styles/global.css"></style> | 
 |  |  | <style src="@wangeditor/editor/dist/css/style.css"></style> | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | .sidecolumn { | 
 |  |  |   // width: 300px; | 
 
 |  |  | 
 |  |  |                     > | 
 |  |  |                   </el-radio-group> | 
 |  |  |                 </el-form-item> | 
 |  |  |                 <!-- <el-form-item label="æå¡å½¢å¼"> | 
 |  |  |                   <SortCheckbox | 
 |  |  |                     v-model="checkList" | 
 |  |  |                     :options="checkboxlist" | 
 |  |  |                     value-key="value" | 
 |  |  |                     label-key="label" | 
 |  |  |                     @change="checkSelectionChange" | 
 |  |  |                   /> | 
 |  |  |                 </el-form-item> --> | 
 |  |  |                 <el-form-item label="æ§è¡å¨æ" prop="longTask"> | 
 |  |  |                   <el-radio-group v-model="form.longTask"> | 
 |  |  |                     <el-radio :label="0">èªå®ä¹å¨æ</el-radio> | 
 |  |  | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import OptionalForm from "@/components/OptionalForm"; //ç¾ç
æ·»å ç»ä»¶ | 
 |  |  | import SFtable from "@/components/SFtable"; //表格ç»ä»¶ | 
 |  |  | import SortCheckbox from "@/components/SortCheckbox"; //表格ç»ä»¶ | 
 |  |  | import { MessageBox } from "element-ui"; | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  | 
 |  |  |         pageNum: 1, // | 
 |  |  |         pageSize: 10, | 
 |  |  |       }, | 
 |  |  |       checkList: "", | 
 |  |  |       checkList: '', | 
 |  |  |       selectedOrder: [], | 
 |  |  |       deliverytopqueryParams: { | 
 |  |  |         pageNum: 1, // | 
 |  |  |         pageSize: 10, | 
 |  |  | 
 |  |  |       serviceType: null, | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   components: { SFtable, OptionalForm }, | 
 |  |  |   components: { SFtable, OptionalForm, SortCheckbox }, | 
 |  |  |  | 
 |  |  |   created() { | 
 |  |  |     this.appraiselist = store.getters.appraiselist; | 
 |  |  | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     checkSelectionChange(selectedValues, selectedOrder) { | 
 |  |  |       this.selectedOrder = selectedOrder; | 
 |  |  |       console.log("å½åéä¸:", selectedValues); | 
 |  |  |       console.log("éä¸é¡ºåº:", selectedOrder); | 
 |  |  |     }, | 
 |  |  |     getillness(id) { | 
 |  |  |       if (id) { | 
 |  |  |         getillness({ outid: id, type: 5 }).then((res) => { |