optimize: 删除不再使用的 `settings.vue` 页面代码。
							parent
							
								
									a4e648a4ce
								
							
						
					
					
						commit
						116e7c778d
					
				|  | @ -1,250 +0,0 @@ | |||
| <!-- | ||||
| <template> | ||||
|   <a-drawer | ||||
|     :title="title" | ||||
|     placement="right" | ||||
|     :closable="false" | ||||
|     :visible="visible" | ||||
|     :after-visible-change="afterVisibleChange" | ||||
|     @close="onClose" | ||||
|     width="650px" | ||||
|     height="100%" | ||||
|     wrapClassName="json-wrapper" | ||||
|   > | ||||
| 
 | ||||
|     <a-tabs | ||||
|       default-active-key="1" | ||||
|       tab-position="left" | ||||
|       :style="{ height: '100%' }" | ||||
|     > | ||||
|       <a-tab-pane tab="拦截设置" key="1"  > | ||||
|         <vue-json-editor style="height:100%;" ref="editor" v-model="targetConfig.intercepts" mode="code" :show-btns="false" :expandedOnStart="true"></vue-json-editor> | ||||
|       </a-tab-pane> | ||||
|       <a-tab-pane tab="DNS设置" key="2"> | ||||
|         <div> | ||||
|           <div>某些域名有时候需要通过其他DNS服务器获取到的IP才可以访问</div> | ||||
|           <a-row style="margin-top:10px"> | ||||
|             <a-col> | ||||
|               <a-button type="primary" icon="plus" @click="addDnsMapping()"/> | ||||
|             </a-col> | ||||
|           </a-row> | ||||
|           <a-row :gutter="10" style="margin-top: 10px" v-for="(item,index) of dnsMappings" :key = 'index'> | ||||
|             <a-col :span="14"> | ||||
|               <a-input :disabled="item.value === false" v-model="item.key"></a-input> | ||||
|             </a-col> | ||||
|             <a-col :span="5"> | ||||
|               <a-select :disabled="item.value === false" v-model="item.value"> | ||||
|                 <a-select-option value="cloudflare">CloudFlare DNS</a-select-option> | ||||
|                 <a-select-option value="aliyun">Aliyun DNS</a-select-option> | ||||
|               </a-select> | ||||
|             </a-col> | ||||
|             <a-col :span="3"> | ||||
|               <a-button v-if="item.value !== false" style="margin-left:10px" type="danger" icon="minus" @click="deleteDnsMapping(item,index)"/> | ||||
|               <a-button v-if="item.value === false" style="margin-left:10px" type="primary" icon="checked" @click="restoreDefDnsMapping(item,index)" ></a-button> | ||||
|             </a-col> | ||||
|           </a-row> | ||||
|         </div> | ||||
|       </a-tab-pane> | ||||
|       <a-tab-pane tab="环境变量" key="3"> | ||||
|         <div> | ||||
|           <div>某些库需要自己设置镜像变量,才能下载,比如:electron</div> | ||||
|           <div> | ||||
|             <a-form-item label="镜像环境变量" > | ||||
|               <a-switch  v-model="targetConfig.setting.startup.variables.npm"  default-checked   v-on:click="(checked)=>{targetConfig.setting.startup.variables.npm = checked}"> | ||||
|                 <a-icon slot="checkedChildren" type="check"/> | ||||
|                 <a-icon slot="unCheckedChildren" type="close"/> | ||||
|               </a-switch> | ||||
|               启动后自动检查设置 | ||||
| 
 | ||||
|               <a-button style="margin-left:10px" @click="doSetNpmVariablesNow">立即设置</a-button> | ||||
|             </a-form-item> | ||||
|           </div> | ||||
|           <a-row :gutter="10" style="margin-top: 10px" v-for="(item,index) of npmVariables" :key = 'index'> | ||||
|             <a-col :span="10"> | ||||
|               <a-input :disabled="item.key === false" v-model="item.key"></a-input> | ||||
|             </a-col> | ||||
|             <a-col :span="10"> | ||||
|               <a-input :disabled="item.value === false" v-model="item.value"></a-input> | ||||
|             </a-col> | ||||
|             <a-col :span="4"> | ||||
|               <a-icon v-if="item.exists" style="color:green" type="check"/> | ||||
|               <a-icon v-if="!item.exists" title="还未设置" style="color:red" type="exclamation-circle"/> | ||||
|             </a-col> | ||||
|           </a-row> | ||||
|         </div> | ||||
|       </a-tab-pane> | ||||
| 
 | ||||
|       <a-tab-pane tab="启动设置" key="4" > | ||||
|         <div>启动应用程序后自动启动</div> | ||||
|         <a-form style="margin-top: 20px"  :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" > | ||||
|           <a-form-item label="代理服务" > | ||||
|             <a-switch  v-model="targetConfig.setting.startup.server"  default-checked   v-on:click="(checked)=>{targetConfig.setting.startup.server = checked}"> | ||||
|               <a-icon slot="checkedChildren" type="check"/> | ||||
|               <a-icon slot="unCheckedChildren" type="close"/> | ||||
|             </a-switch> | ||||
|           </a-form-item> | ||||
| 
 | ||||
|           <a-form-item  v-for="(item,key) in targetConfig.setting.startup.proxy" :key="key" :label="key"> | ||||
|             <a-switch  v-model="targetConfig.setting.startup.proxy[key]"  default-checked   v-on:click="(checked)=>{targetConfig.setting.startup.proxy[key] = checked}"> | ||||
|               <a-icon slot="checkedChildren" type="check"/> | ||||
|               <a-icon slot="unCheckedChildren" type="close"/> | ||||
|             </a-switch> | ||||
|           </a-form-item> | ||||
|         </a-form> | ||||
|       </a-tab-pane> | ||||
|     </a-tabs> | ||||
| 
 | ||||
|   </a-drawer> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import vueJsonEditor from 'vue-json-editor-fix-cn' | ||||
| import lodash from 'lodash' | ||||
| import api from '../api' | ||||
| export default { | ||||
|   name: 'setting', | ||||
|   components: { | ||||
|     vueJsonEditor | ||||
|   }, | ||||
|   props: { | ||||
|     config: { | ||||
|       type: Object | ||||
|     }, | ||||
|     title: { | ||||
|       type: String, | ||||
|       default: '编辑' | ||||
|     }, | ||||
|     visible: { | ||||
|       type: Boolean | ||||
|     } | ||||
|   }, | ||||
|   data () { | ||||
|     return { | ||||
|       targetConfig: {}, | ||||
|       dnsMappings: [], | ||||
|       npmVariables: [] | ||||
|     } | ||||
|   }, | ||||
|   created () { | ||||
|     this.resetConfig() | ||||
|   }, | ||||
|   methods: { | ||||
|     resetConfig () { | ||||
|       this.targetConfig = lodash.cloneDeep(this.config) | ||||
|       console.log('targetConfig', this.targetConfig) | ||||
|       this.dnsMappings = [] | ||||
|       for (const key in this.targetConfig.dns.mapping) { | ||||
|         const value = this.targetConfig.dns.mapping[key] | ||||
|         this.dnsMappings.push({ | ||||
|           key, value | ||||
|         }) | ||||
|       } | ||||
| 
 | ||||
|       api.config.getVariables('npm').then(ret => { | ||||
|         this.npmVariables = ret | ||||
|       }) | ||||
|     }, | ||||
|     afterVisibleChange (val) { | ||||
|       console.log('visible', val) | ||||
|       if (val === true) { | ||||
|         this.resetConfig() | ||||
|       } | ||||
|     }, | ||||
|     showDrawer () { | ||||
|       this.$emit('update:visible', true) | ||||
|     }, | ||||
|     onClose () { | ||||
|       if (this.isChanged()) { | ||||
|         this.$confirm({ | ||||
|           title: '提示', | ||||
|           content: '是否需要保存?', | ||||
|           cancelText: '取消', | ||||
|           okText: '确定', | ||||
|           onOk: () => { | ||||
|             this.doSave() | ||||
|           }, | ||||
|           onCancel () {} | ||||
|         }) | ||||
|       } | ||||
| 
 | ||||
|       this.$emit('update:visible', false) | ||||
|     }, | ||||
|     syncTargetConfig () { | ||||
|       const mapping = {} | ||||
|       for (const item of this.dnsMappings) { | ||||
|         mapping[item.key] = item.value | ||||
|       } | ||||
|       this.targetConfig.dns.mapping = mapping | ||||
| 
 | ||||
|       const variables = {} | ||||
|       for (const item of this.npmVariables) { | ||||
|         variables[item.key] = item.value | ||||
|       } | ||||
|       this.targetConfig.variables.npm = variables | ||||
|     }, | ||||
|     isChanged () { | ||||
|       this.syncTargetConfig() | ||||
|       return !lodash.isEqual(this.config, this.targetConfig) | ||||
|     }, | ||||
|     doSave () { | ||||
|       return api.config.save(this.targetConfig).then(ret => { | ||||
|         this.$emit('change', ret.diffConfig) | ||||
|       }) | ||||
|     }, | ||||
|     deleteDnsMapping (item, index) { | ||||
|       this.dnsMappings.splice(index, 1) | ||||
|     }, | ||||
|     restoreDefDnsMapping (item, index) { | ||||
| 
 | ||||
|     }, | ||||
|     addDnsMapping () { | ||||
|       this.dnsMappings.unshift({ key: '', value: 'quad9' }) | ||||
|     }, | ||||
|     doSetNpmVariablesNow () { | ||||
|       this.syncTargetConfig() | ||||
|       this.doSave().then(() => { | ||||
|         return api.config.setVariables('npm') | ||||
|       }).then(() => { | ||||
|         return api.config.getVariables('npm').then(ret => { | ||||
|           this.npmVariables = ret | ||||
|         }) | ||||
|       }).then(() => { | ||||
|         this.$message.success('设置成功') | ||||
|       }) | ||||
|     }, | ||||
|     addNpmVariable () { | ||||
|       this.npmVariables.push({ key: '', value: '', exists: false }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style> | ||||
| .json-wrapper .ant-drawer-wrapper-body{ | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
| } | ||||
| .json-wrapper .ant-drawer-wrapper-body .ant-drawer-body{ | ||||
|   flex: 1; | ||||
|   height: 0; | ||||
| } | ||||
| .json-wrapper .jsoneditor-vue{ | ||||
|   height:100% | ||||
| } | ||||
| .json-wrapper .ant-tabs{ | ||||
|   height: 100%; | ||||
| } | ||||
| .json-wrapper .ant-tabs-content{ | ||||
|   height: 100%; | ||||
| } | ||||
| .json-wrapper .ant-tabs-tabpane-active{ | ||||
|   height: 100%; | ||||
|   overflow-y: auto; | ||||
|   overflow-x: hidden; | ||||
| } | ||||
| 
 | ||||
| .a-form{ | ||||
|   margin-bottom: 10px; | ||||
| } | ||||
| </style> | ||||
| --> | ||||
		Loading…
	
		Reference in New Issue
	
	 王良
						王良