初始化
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
if (typeof Vue === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
var createApp = Vue.createApp;
|
||||
|
||||
var productEl = document.getElementById('product-app');
|
||||
if (productEl) {
|
||||
createApp({
|
||||
data: function () {
|
||||
return {
|
||||
q: '',
|
||||
products: window.PRODUCTS || []
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
filtered: function () {
|
||||
var kw = this.q.trim().toLowerCase();
|
||||
if (!kw) {
|
||||
return this.products;
|
||||
}
|
||||
return this.products.filter(function (p) {
|
||||
return (p.name + ' ' + p.code + ' ' + p.desc).toLowerCase().indexOf(kw) !== -1;
|
||||
});
|
||||
}
|
||||
}
|
||||
}).mount(productEl);
|
||||
}
|
||||
|
||||
var contactEl = document.getElementById('contact-app');
|
||||
if (contactEl) {
|
||||
createApp({
|
||||
data: function () {
|
||||
return {
|
||||
form: { name: '', email: '', phone: '', company: '', subject: '', message: '' },
|
||||
errors: {},
|
||||
submitting: false,
|
||||
message: '',
|
||||
ok: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
remaining: function () {
|
||||
return 1000 - this.form.message.length;
|
||||
},
|
||||
messageClass: function () {
|
||||
return this.ok
|
||||
? 'rounded-lg border border-success bg-success-soft px-4 py-3 text-sm text-success'
|
||||
: 'rounded-lg border border-danger bg-danger-soft px-4 py-3 text-sm text-danger';
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submit: function () {
|
||||
var self = this;
|
||||
self.submitting = true;
|
||||
self.message = '';
|
||||
self.errors = {};
|
||||
|
||||
var tokenEl = document.querySelector('meta[name="csrf-token"]');
|
||||
var token = tokenEl ? tokenEl.getAttribute('content') : '';
|
||||
|
||||
fetch('/contact', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json',
|
||||
'X-CSRF-TOKEN': token
|
||||
},
|
||||
body: JSON.stringify(self.form)
|
||||
})
|
||||
.then(function (res) { return res.json(); })
|
||||
.then(function (data) {
|
||||
self.ok = !!data.ok;
|
||||
self.message = data.message || (self.ok ? '提交成功。' : '提交失败。');
|
||||
if (self.ok) {
|
||||
self.form = { name: '', email: '', phone: '', company: '', subject: '', message: '' };
|
||||
} else if (data.errors) {
|
||||
self.errors = data.errors;
|
||||
}
|
||||
})
|
||||
.catch(function () {
|
||||
self.ok = false;
|
||||
self.message = '网络异常,请稍后重试。';
|
||||
})
|
||||
.finally(function () {
|
||||
self.submitting = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}).mount(contactEl);
|
||||
}
|
||||
})();
|
||||
Vendored
+9
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user