From a924ffa0178a68bf2e0b2cbfe37019a1e46402ad Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Thu, 21 Aug 2025 18:28:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/site/addSiteStep/step1.vue | 699 ++++++++++++----------- src/components/site/serviceSetting/domainSet.vue | 12 +- src/style/theme/common.scss | 2 +- src/views/agent/siteServiceList.vue | 16 +- 4 files changed, 394 insertions(+), 335 deletions(-) diff --git a/src/components/site/addSiteStep/step1.vue b/src/components/site/addSiteStep/step1.vue index eb8c53e..ae2de93 100644 --- a/src/components/site/addSiteStep/step1.vue +++ b/src/components/site/addSiteStep/step1.vue @@ -6,36 +6,38 @@

站点信息

- -
站点简称
-
一个站点对应一个销售渠道,定义好名字好区分
- -
- -
销售渠道
- {{formData.sale_channel_label}} - -
+ +
域名来源
- +
- + + + + {{ formData.plat_domain }} + + +
@@ -46,20 +48,22 @@

销售方向

- +
- +
- {{formData.site_tpl_name}} + {{ formData.site_tpl_name }}
- - - - + + + +
修改 @@ -89,8 +93,10 @@
- 跳过 - 下一步 + + 跳过 + 下一步
@@ -105,341 +111,380 @@ import domainBind from "@/components/domainBind.vue"; import db from '@/utils/indexedDBUtil' export default { - name: 'domainSet', - props: { - siteInfo: { - type: Object, - required: true - }, - skip: { - type: Boolean, - required: false - } - }, - components: { - domainBind, - GuipFormItem, GuipRadio, GuipInput, - GuipButton - }, - data(){ - return { - showAlert: false, - formData: { - short_name: '', - sale_channel: '', - sale_channel_label: '', - site_type: '', - site_tpl: '', - site_tpl_name: '', - site_tpl_ico: '', - site_tpl_logo: '', - picture:'', - not_finished_uid: '', - plat_domain: '', - domain_type: '', - domain_prefix: '', - domain_name: '', - sale_channels:{}, - sale_channels_label:{}, - domain_types:{}, - site_types:{}, - site_type_tpl:{}, - }, - formRules: { - short_name: [ - { required: true, message: '请输入站点简称', trigger: 'blur' } - ], - sale_channel: [ - { required: true, message: '请选择销售渠道', trigger: 'blur' } - ], - domain_prefix: [ - { required: true, message: '请设置站点域名', trigger: 'blur' } - ], - site_type: [ - { required: true, message: '请选择站点类型', trigger: 'blur' } - ], + name: 'domainSet', + props: { + siteInfo: { + type: Object, + required: true }, - } - }, - computed: { - submitData() { - let domain = ""; - if (this.formData.domain_type === '1') { - domain = this.formData.domain_prefix + this.formData.plat_domain - } else if (this.formData.domain_type === '2') { - domain = this.formData.domain_prefix + this.formData.domain_name + skip: { + type: Boolean, + required: false } + }, + components: { + domainBind, + GuipFormItem, GuipRadio, GuipInput, + GuipButton + }, + data() { return { - short_name: this.formData.short_name, - domain: domain, - sale_channel: this.formData.sale_channel, - site_type: this.formData.site_type, - site_tpl: this.formData.site_tpl, - not_finished_uid: this.formData.not_finished_uid, - ico: this.formData.site_tpl_ico, - logo: this.formData.site_tpl_logo, + showAlert: false, + formData: { + short_name: '', + sale_channel: '', + sale_channel_label: '', + site_type: '', + site_tpl: '', + site_tpl_name: '', + site_tpl_ico: '', + site_tpl_logo: '', + picture: '', + not_finished_uid: '', + plat_domain: '', + domain_type: '', + domain_prefix: '', + domain_name: '', + sale_channels: {}, + sale_channels_label: {}, + domain_types: {}, + site_types: {}, + site_type_tpl: {}, + }, + formRules: { + short_name: [ + { required: true, message: '请输入站点简称', trigger: 'blur' } + ], + sale_channel: [ + { required: true, message: '请选择销售渠道', trigger: 'blur' } + ], + domain_prefix: [ + { required: true, message: '请设置站点域名', trigger: 'blur' } + ], + site_type: [ + { required: true, message: '请选择站点类型', trigger: 'blur' } + ], + }, } }, - }, - mounted() { - const formData = JSON.parse(localStorage.getItem('formData')) - if(formData){ - this.formData = formData; - localStorage.removeItem('formData') - this.getSiteTplSet() - return true; - } - - if(this.skip && !localStorage.getItem('showAlert')) this.showAlert = true - this.getAddInfo() - }, - methods:{ - hideAlert(){ - this.showAlert = false - localStorage.setItem('showAlert', false) - }, - async getSiteTplSet(){ - const siteTplInfo = JSON.parse(localStorage.getItem('site_tpl_info')) - if(siteTplInfo){ - this.formData.site_tpl = siteTplInfo.site_tpl - this.formData.site_tpl_name = siteTplInfo.site_tpl_name - this.formData.picture = siteTplInfo.picture - } + computed: { + submitData() { + let domain = ""; + if (this.formData.domain_type === '1') { + domain = this.formData.domain_prefix + this.formData.plat_domain + } else if (this.formData.domain_type === '2') { + domain = this.formData.domain_prefix + this.formData.domain_name + } + return { + short_name: this.formData.short_name, + domain: domain, + sale_channel: this.formData.sale_channel, + site_type: this.formData.site_type, + site_tpl: this.formData.site_tpl, + not_finished_uid: this.formData.not_finished_uid, + ico: this.formData.site_tpl_ico, + logo: this.formData.site_tpl_logo, + } + }, + }, + mounted() { + const formData = JSON.parse(localStorage.getItem('formData')) + if (formData) { + this.formData = formData; + localStorage.removeItem('formData') + this.getSiteTplSet() + return true; + } - const ico = await db.get('ico') - if(ico) this.formData.site_tpl_ico = ico - const logo = await db.get('logo') - if(logo) this.formData.site_tpl_logo = logo - }, - getAddInfo() { - const that = this - this.$http('POST', '/agentnew/ajax_get_site_add_info', {}).then(response => { - if(response.status){ - const addInfo = response.data - that.formData.sale_channels = addInfo.sale_channels - that.formData.sale_channels_label = addInfo.sale_channels_label + if (this.skip && !localStorage.getItem('showAlert')) this.showAlert = true + this.getAddInfo() + }, + methods: { + hideAlert() { + this.showAlert = false + localStorage.setItem('showAlert', false) + }, + async getSiteTplSet() { + const siteTplInfo = JSON.parse(localStorage.getItem('site_tpl_info')) + if (siteTplInfo) { + this.formData.site_tpl = siteTplInfo.site_tpl + this.formData.site_tpl_name = siteTplInfo.site_tpl_name + this.formData.picture = siteTplInfo.picture + } - that.formData.domain_type = String(addInfo.domain_type) - that.formData.domain_types = addInfo.domain_types - that.formData.plat_domain = addInfo.plat_domain + const ico = await db.get('ico') + if (ico) this.formData.site_tpl_ico = ico + const logo = await db.get('logo') + if (logo) this.formData.site_tpl_logo = logo + }, + getAddInfo() { + const that = this + this.$http('POST', '/agentnew/ajax_get_site_add_info', {}).then(response => { + if (response.status) { + const addInfo = response.data + that.formData.sale_channels = addInfo.sale_channels + that.formData.sale_channels_label = addInfo.sale_channels_label - that.formData.site_type = String(addInfo.site_type) - that.formData.site_types = addInfo.site_types - that.formData.site_type_tpl = addInfo.site_type_tpl - if(that.formData.site_type){ - that.formData.site_tpl = this.formData.site_type_tpl[this.formData.site_type].site_tpl - that.formData.site_tpl_name = this.formData.site_type_tpl[this.formData.site_type].site_tpl_name - that.formData.picture = this.formData.site_type_tpl[this.formData.site_type].picture - } + that.formData.domain_type = String(addInfo.domain_type) + that.formData.domain_types = addInfo.domain_types + that.formData.plat_domain = addInfo.plat_domain - if(Object.keys(that.siteInfo).length>0){ - that.$nextTick(() => { - that.formData.short_name = that.siteInfo.short_name - that.formData.sale_channel = String(that.siteInfo.sale_channel) - that.formData.site_type = String(that.siteInfo.site_type) - that.formData.site_tpl = that.siteInfo.site_tpl - that.formData.site_tpl_name = that.siteInfo.site_tpl_name - that.formData.picture = that.siteInfo.picture - that.formData.not_finished_uid = that.siteInfo.uid + that.formData.site_type = String(addInfo.site_type) + that.formData.site_types = addInfo.site_types + that.formData.site_type_tpl = addInfo.site_type_tpl + if (that.formData.site_type) { + that.formData.site_tpl = this.formData.site_type_tpl[this.formData.site_type].site_tpl + that.formData.site_tpl_name = this.formData.site_type_tpl[this.formData.site_type].site_tpl_name + that.formData.picture = this.formData.site_type_tpl[this.formData.site_type].picture + } - that.formData.domain_type = String(that.siteInfo.domain_type) - that.formData.domain_prefix = that.siteInfo.domain_prefix; - that.formData.domain_name = that.siteInfo.domain_name; - }) - } - return true - } - that.$message.error(response.info); - }).catch(error => { - console.error(error, 'error') - }) - }, - radioChange(){ - const labels = this.formData.sale_channels_label; - const value = this.formData.sale_channel; - this.formData.sale_channel_label = labels && labels[value] ? labels[value] : ''; - }, - radioTypeChange(){ - if(this.formData.site_type){ - this.formData.site_tpl = this.formData.site_type_tpl[this.formData.site_type].site_tpl - this.formData.site_tpl_name = this.formData.site_type_tpl[this.formData.site_type].site_tpl_name - this.formData.picture = this.formData.site_type_tpl[this.formData.site_type].picture - } - }, - handleClear() { - this.formData.domain_prefix = ''; - }, - handleChangeDomain(data) { - this.formData.domain_prefix = data.prefix - this.formData.domain_name = data.domain - }, - // previewTpl(){ - // window.open('http://'+this.siteInfo.domain, '_blank'); - // }, - changeTpl(){ - if(this.formData.site_type === ''){ - this.$message.warning('请选择站点类型'); - return false; - } - localStorage.setItem('formData', JSON.stringify(this.formData)) - if(this.formData.not_finished_uid){ - this.$router.push(`/agent/siteTemplate?uid=${this.formData.not_finished_uid}`) - }else{ - this.$router.push(`/agent/siteTemplate?site_type=${this.formData.site_type}`) - } - }, - jumpStep(){ - this.$router.push('/') - }, - saveConfirm() { - const that = this - let formValid = false; - that.$refs.formRef.validate((valid) => { - formValid = valid - }); + if (Object.keys(that.siteInfo).length > 0) { + that.$nextTick(() => { + that.formData.short_name = that.siteInfo.short_name + that.formData.sale_channel = String(that.siteInfo.sale_channel) + that.formData.site_type = String(that.siteInfo.site_type) + that.formData.site_tpl = that.siteInfo.site_tpl + that.formData.site_tpl_name = that.siteInfo.site_tpl_name + that.formData.picture = that.siteInfo.picture + that.formData.not_finished_uid = that.siteInfo.uid - let domainValid = false; - if(that.formData.domain_type === '2'){ - that.$refs.domainBind.$refs.bindFormRef.validate(valid => { - domainValid = valid - }) - }else{ - domainValid = true - } + that.formData.domain_type = String(that.siteInfo.domain_type) + that.formData.domain_prefix = that.siteInfo.domain_prefix; + that.formData.domain_name = that.siteInfo.domain_name; + }) + } + return true + } + that.$message.error(response.info); + }).catch(error => { + console.error(error, 'error') + }) + }, + radioChange() { + const labels = this.formData.sale_channels_label; + const value = this.formData.sale_channel; + this.formData.sale_channel_label = labels && labels[value] ? labels[value] : ''; + }, + radioTypeChange() { + if (this.formData.site_type) { + this.formData.site_tpl = this.formData.site_type_tpl[this.formData.site_type].site_tpl + this.formData.site_tpl_name = this.formData.site_type_tpl[this.formData.site_type].site_tpl_name + this.formData.picture = this.formData.site_type_tpl[this.formData.site_type].picture + } + }, + handleClear() { + this.formData.domain_prefix = ''; + }, + handleChangeDomain(data) { + this.formData.domain_prefix = data.prefix + this.formData.domain_name = data.domain + }, + // previewTpl(){ + // window.open('http://'+this.siteInfo.domain, '_blank'); + // }, + changeTpl() { + if (this.formData.site_type === '') { + this.$message.warning('请选择站点类型'); + return false; + } + localStorage.setItem('formData', JSON.stringify(this.formData)) + if (this.formData.not_finished_uid) { + this.$router.push(`/agent/siteTemplate?uid=${this.formData.not_finished_uid}`) + } else { + this.$router.push(`/agent/siteTemplate?site_type=${this.formData.site_type}`) + } + }, + jumpStep() { + this.$router.push('/') + }, + validateFunc(fields){ + const that = this + let flag = false + // 遍历每个表单项 + if(Array.isArray(fields)){ + fields.forEach(field => { + if (flag) return + // 验证单个字段 + field.validate('', (error) => { + if (error) { + // 获取字段的label + const label = field.label; + const prop = field.prop; + + flag = true; + console.log('label',prop, label); + if (!label) return + that.$positionMessage({ + type: 'error', + message: label + '不得为空', + target: that.$refs.nextStepRef1, // 可以是DOM元素或选择器 + position: 'top' + }) + } + }); + }); + } + }, + saveConfirm() { + const that = this + let formValid = false; + let fields = that.$refs.formRef.fields; + that.validateFunc(fields) + that.$refs.formRef.validate((valid) => { + formValid = valid + }); + let domainValid = false; + if (that.formData.domain_type === '2') { + that.$refs.domainBind.$refs.bindFormRef.validate(valid => { + domainValid = valid + }) + that.$positionMessage({ + type: 'error', + message: '域名设置不得为空', + target: that.$refs.nextStepRef1, // 可以是DOM元素或选择器 + position: 'top' + }) + } else { + domainValid = true + } - if (formValid && domainValid) { - that.$http('POST', '/agentnew/ajax_add_new_site', that.submitData).then(async response => { - if(response.status && response.data.uid){ - await that.deleteSiteTplData() + if (formValid && domainValid) { + that.$http('POST', '/agentnew/ajax_add_new_site', that.submitData).then(async response => { + if (response.status && response.data.uid) { + await that.deleteSiteTplData() - that.formData.uid = response.data.uid - that.$emit('handelSiteInfo', that.formData) + that.formData.uid = response.data.uid + that.$emit('handelSiteInfo', that.formData) - if(that.formData.sale_channel === '2'){ - //自用站点无需设置收款方式 - that.$emit('handelStep', 3) - }else{ - that.$emit('handelStep', 2) - } - return true; - } - that.$message.error(response.info); - }).catch(error => { - console.error(error, 'error') - }) - } - }, - async deleteSiteTplData(){ - localStorage.removeItem('activeStep') - localStorage.removeItem('site_tpl_info') - await db.remove('ico') - await db.remove('logo') - }, - } + if (that.formData.sale_channel === '2') { + //自用站点无需设置收款方式 + that.$emit('handelStep', 3) + } else { + that.$emit('handelStep', 2) + } + return true; + } + that.$message.error(response.info); + }).catch(error => { + console.error(error, 'error') + }) + } + }, + async deleteSiteTplData() { + localStorage.removeItem('activeStep') + localStorage.removeItem('site_tpl_info') + await db.remove('ico') + await db.remove('logo') + }, + } } \ No newline at end of file diff --git a/src/components/site/serviceSetting/domainSet.vue b/src/components/site/serviceSetting/domainSet.vue index 37214ed..91cbef8 100644 --- a/src/components/site/serviceSetting/domainSet.vue +++ b/src/components/site/serviceSetting/domainSet.vue @@ -6,16 +6,16 @@
+ +
+ 当前服务域名:{{info.domain}} +
域名来源
-
- 当前服务域名:{{info.domain}} -
- -
@@ -121,7 +121,7 @@ export default { font-size: 14px; letter-spacing: 0.08em; color: #1E2226; - margin-bottom: 12px; + margin-bottom: 16px; } .domain-radio{ diff --git a/src/style/theme/common.scss b/src/style/theme/common.scss index cc3b3ef..f226e9a 100644 --- a/src/style/theme/common.scss +++ b/src/style/theme/common.scss @@ -78,7 +78,7 @@ body { cursor: pointer; transition: all .3s; - &:hover { + & > *:hover { transition: all .3s; color: #006AFF !important; } diff --git a/src/views/agent/siteServiceList.vue b/src/views/agent/siteServiceList.vue index 1bb6a26..ab794f5 100644 --- a/src/views/agent/siteServiceList.vue +++ b/src/views/agent/siteServiceList.vue @@ -21,7 +21,7 @@ + @selection-change="handleSelectionChange" @select="handleSelect" :row-class-name="setRowStyle">