handle all not found errors

This commit is contained in:
Amir Mohamadi
2021-12-31 17:01:17 +03:30
parent 5c07791225
commit 064d642b7e
47 changed files with 3386 additions and 3238 deletions
+3 -3
View File
@@ -86,7 +86,7 @@ module.exports.login = [
if (!errors.isEmpty()) return res.status(422).json({validation: errors.mapped()})
Admin.findOne({username: req.body.username}, (err, user) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
bcrypt.compare(req.body.password, user.password, (err, isMatch) => {
if (err) console.log(err)
if (!isMatch) return res.status(422).json({validation: {password: {msg: v_m['fa'].not_found.password}}})
@@ -111,7 +111,7 @@ module.exports.logout = [
const token = req.headers.authorization
if (token) {
Admin.findOneAndUpdate({token: token}, {token: null}, (err, oldData) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
if (oldData) return res.json({message: v_m['fa'].response.logged_out})
return res.status(401).json({message: v_m['fa'].response.not_logged_in})
})
@@ -130,7 +130,7 @@ module.exports.getUser = [
jwt.verify(token, config.secretKey, (err, decoded) => {
if (err) return res.status(401).json({message: 'unauthenticated'})
Admin.findById(decoded._id, (err, data) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json({user: data})
})
})
+4 -4
View File
@@ -105,7 +105,7 @@ module.exports.update = [
updated_at: dateformat(Date.now(), 'yyyy-mm-dd HH:MM:ss')
}
BlogCategory.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json({message: v_m['fa'].response.success_save})
})
}
@@ -115,10 +115,10 @@ module.exports.update = [
module.exports.delete = [
(req, res) => {
BlogPost.find({category: req.params.id}, (err, posts) => {
if (err) console.log(err)
if (!posts.length) {
BlogCategory.findByIdAndDelete(req.params.id, (err) => {
if (err) return res.status(404).json({message: err})
if (!posts.length) {
BlogCategory.findByIdAndDelete(req.params.id, (err1) => {
if (err1) return res.status(404).json({message: err1})
return res.json({message: v_m['fa'].response.success_save})
})
} else {
+15 -9
View File
@@ -80,6 +80,9 @@ module.exports.create = [
.cover(thumbWith, thumbHeight)
.write(`./static/uploads/images/blog/thumb_${coverName}`)
})
.catch(err => {
console.log(err)
})
const data = {
post_details: {
@@ -112,7 +115,7 @@ module.exports.create = [
module.exports.getAll = [
(req, res) => {
BlogPost.find({}).sort({_id: -1}).exec((err, posts) => {
if (err) console.log(err)
if (err) return res.status(500).json({message: err})
return res.json(posts)
})
}
@@ -122,7 +125,7 @@ module.exports.getAll = [
module.exports.getOne = [
(req, res) => {
BlogPost.findById(req.params.id, (err, post) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json(post)
})
}
@@ -213,10 +216,13 @@ module.exports.update = [
.cover(thumbWith, thumbHeight)
.write(`./static/uploads/images/blog/thumb_${coverName}`)
})
.catch(err => {
console.log(err)
})
}
BlogPost.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
if (cover && cover.data) {
fs.unlink(`./static/${oldData.cover}`, err => {
if (err) console.log(err)
@@ -225,8 +231,8 @@ module.exports.update = [
if (err) console.log(err)
})
}
BlogPost.findById(oldData._id, (err, newData) => {
if (err) console.log(err)
BlogPost.findById(oldData._id, (err1, newData) => {
if (err1) return res.status(404).json({message: err1})
return res.json(newData)
})
})
@@ -238,11 +244,11 @@ module.exports.delete = [
(req, res) => {
BlogPost.findByIdAndDelete(req.params.id, (err, post) => {
if (err) return res.status(404).json({message: err})
fs.unlink(`./static/${post.cover}`, err => {
if (err) console.log(err)
fs.unlink(`./static/${post.cover}`, err1 => {
if (err1) console.log(err1)
})
fs.unlink(`./static/${post.thumb}`, err => {
if (err) console.log(err)
fs.unlink(`./static/${post.thumb}`, err2 => {
if (err2) console.log(err2)
})
return res.json({message: v_m['fa'].response.success_remove})
})
+2 -2
View File
@@ -92,7 +92,7 @@ module.exports.getAll = [
})
.catch(err => {
console.log(err)
return res.status(500).json(err)
return res.status(500).json({message: err})
})
}
]
@@ -107,7 +107,7 @@ module.exports.getOne = [
return res.json(message)
})
.catch(err => {
return res.status(404).json(err)
return res.status(404).json({message: err})
})
}
]
+1 -1
View File
@@ -51,7 +51,7 @@ module.exports.getAll = [
module.exports.delete = [
(req, res) => {
Reason.findByIdAndDelete(req.params.id, (err, reason) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json({message: v_m['fa'].response.success_remove})
})
}
+3 -3
View File
@@ -84,7 +84,7 @@ module.exports.getAll = [
module.exports.getOne = [
(req, res) => {
History.findById(req.params.id, (err, data) => {
if (err) return res.status(404).json(err)
if (err) return res.status(404).json({message: err})
return res.json(data)
})
}
@@ -151,7 +151,7 @@ module.exports.update = [
})
} else {
History.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json(v_m['fa'].response.success_save)
})
}
@@ -162,7 +162,7 @@ module.exports.update = [
module.exports.delete = [
(req, res) => {
History.findByIdAndDelete(req.params.id, (err, data) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
fs.unlink(`./static/${data.image}`, err => {
if (err) console.log(err)
return res.json(v_m['fa'].response.success_remove)
+1 -4
View File
@@ -8,11 +8,10 @@ module.exports.create = [
if (!req.files || !req.files.pdf) return res.status(422).json({validation: {pdf: {msg: v_m['fa'].required.file}}})
if (req.files.pdf.mimetype.split('/')[1] !== 'pdf') return res.status(422).json({validation: {pdf: {msg: v_m['fa'].file_types.pdf}}})
MainCatalog.find({}, (err, catalogs) => {
if (err) console.log(err)
if (catalogs.length) {
let firstFile = catalogs[0]
if (firstFile.file[req.body.locale]) fs.unlink(`./static/${firstFile.file[req.body.locale]}`, err => {
if (err) console.log(err)
})
@@ -24,8 +23,6 @@ module.exports.create = [
req.files.pdf.mv(`./static/uploads/pdf/${req.body.locale}_${req.files.pdf.name}`)
return res.json(firstFile)
})
} else {
const data = {created_at: dateformat(Date.now(), 'yyyy-mm-dd HH:MM:ss'), file: {}}
data.file[req.body.locale] = req.body.locale + '_' + req.files.pdf.name
+41 -2
View File
@@ -168,6 +168,9 @@ module.exports.createProduct = [
.quality(thumbQuality)
.write(`./static/uploads/images/products/${thumb}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.more_section_image1) {
await jimp.read(req.files.more_section_image1.data)
@@ -178,6 +181,9 @@ module.exports.createProduct = [
.quality(moreSectionQuality)
.write(`./static/uploads/images/products/${more_section_image1}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.more_section_image2) {
await jimp.read(req.files.more_section_image2.data)
@@ -188,6 +194,9 @@ module.exports.createProduct = [
.quality(moreSectionQuality)
.write(`./static/uploads/images/products/${more_section_image2}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.render_image1) {
await jimp.read(req.files.render_image1.data)
@@ -198,6 +207,9 @@ module.exports.createProduct = [
.quality(renderImageQuality)
.write(`./static/uploads/images/products/${render_image1}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.render_image2) {
await jimp.read(req.files.render_image2.data)
@@ -208,6 +220,9 @@ module.exports.createProduct = [
.quality(renderImageQuality)
.write(`./static/uploads/images/products/${render_image2}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.chart_image) {
await jimp.read(req.files.chart_image.data)
@@ -216,6 +231,9 @@ module.exports.createProduct = [
.quality(chartImageQuality)
.write(`./static/uploads/images/products/${chart_image}`)
})
.catch(err => {
console.log(err)
})
}
}
@@ -249,8 +267,8 @@ module.exports.getAllProducts = [
]
module.exports.getOneProduct = [
async (req, res) => {
await Product.findById(req.params.id, async (err, product) => {
(req, res) => {
Product.findById(req.params.id, (err, product) => {
if (err) return res.status(404).json({message: err})
return res.json(product)
})
@@ -394,6 +412,9 @@ module.exports.updateProduct = [
.quality(thumbQuality)
.write(`./static/uploads/images/products/${thumb}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.more_section_image1) {
@@ -406,6 +427,9 @@ module.exports.updateProduct = [
.quality(moreSectionQuality)
.write(`./static/uploads/images/products/${more_section_image1}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.more_section_image2) {
@@ -418,6 +442,9 @@ module.exports.updateProduct = [
.quality(moreSectionQuality)
.write(`./static/uploads/images/products/${more_section_image2}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.render_image1) {
@@ -430,6 +457,9 @@ module.exports.updateProduct = [
.quality(renderImageQuality)
.write(`./static/uploads/images/products/${render_image1}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.render_image2) {
@@ -442,6 +472,9 @@ module.exports.updateProduct = [
.quality(renderImageQuality)
.write(`./static/uploads/images/products/${render_image2}`)
})
.catch(err => {
console.log(err)
})
}
if (req.files.chart_image) {
@@ -452,6 +485,9 @@ module.exports.updateProduct = [
.quality(chartImageQuality)
.write(`./static/uploads/images/products/${chart_image}`)
})
.catch(err => {
console.log(err)
})
}
}
@@ -584,6 +620,9 @@ module.exports.createProductImage = [
return res.json(product)
})
})
.catch(err => {
console.log(err)
})
} else {
return res.status(422).json({validation: {images: {image: {msg: v_m['fa'].required.image}}}})
+7 -3
View File
@@ -74,7 +74,7 @@ module.exports.getAll = [
module.exports.getOne = [
(req, res) => {
Project.findById(req.params.id, (err, project) => {
if (err) return res.json({errors: err})
if (err) return res.status(404).json({errors: err})
return res.json(project)
})
}
@@ -128,7 +128,7 @@ module.exports.update = [
}
Project.findByIdAndUpdate(req.params.id, data, (err, oldData) => {
if (err) console.log(err)
if (err) return res.status(404).json({message: err})
return res.json({message: v_m['fa'].response.success_save})
})
}
@@ -138,11 +138,15 @@ module.exports.update = [
module.exports.delete = [
(req, res) => {
Project.findByIdAndRemove(req.params.id, (err, data) => {
if (err) return res.json({error: err})
if (err) return res.status(404).json({message: err})
data.images.forEach(async item => {
try {
await fs.unlink(`./static/${item.image}`, err => {
if (err) console.log(err)
})
} catch (e) {
console.log(e)
}
})
return res.json({message: v_m['fa'].response.success_remove})
})
+5 -1
View File
@@ -37,7 +37,7 @@
<nuxt-link :to="{name: 'lang',params: {lang: $route.params.lang}}" tag="li" exact class="">
<a>{{ staticData.home }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang}}" tag="li" exact class="">
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang}}" tag="li" class="">
<a>{{ staticData.about }}</a>
</nuxt-link>
<nuxt-link :to="{name: 'lang-services',params: {lang: $route.params.lang}}" tag="li" exact class="">
@@ -114,8 +114,12 @@ export default {
}
},
async fetch() {
try {
let catalog = await this.$axios.get('/api/public/catalog')
this.catalog = catalog.data
} catch (e) {
this.$nuxt.context.error({status: 404, message: 'Catalog file not found'})
}
},
computed: {
staticData() {
+6 -2
View File
@@ -44,7 +44,7 @@
</div>
</section>
<section class="s2" v-if="history.length">
<section class="s2" v-if="history.length" id="history_timeline">
<div class="container">
<div class="row">
<div class="col-12">
@@ -157,11 +157,15 @@ export default {
title: this.staticData.hero
}
},
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
const history = await $axios.get(`/api/public/history`)
return {
history: history.data
}
} catch (e) {
error({status: 404, message: 'There is problem here'})
}
}
}
</script>
+5 -1
View File
@@ -84,13 +84,17 @@ export default {
title: this.post.post_details[this.$route.params.lang].title
}
},
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
const post = await $axios.get(`/api/public/blog/${params.post}`)
const blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
post: post.data,
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+5 -1
View File
@@ -119,13 +119,17 @@ export default {
title: this.staticData.hero
}
},
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let posts = await $axios.get(`/api/public/blog`)
const blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
posts: posts.data,
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -1
View File
@@ -179,11 +179,15 @@ export default {
title: this.staticData.hero
}
},
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
const reasons = await $axios.get(`/api/public/contact/reason`)
return {
reasons: reasons.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+6 -2
View File
@@ -42,7 +42,7 @@
<div class="col-12">
<p>{{ staticData.s1_2.t2 }}</p>
<p>{{ staticData.s1_2.t3 }}</p>
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang}}" class="btn btn-primary">{{ staticData.s1_2.link }}</nuxt-link>
<nuxt-link :to="{name: 'lang-about',params: {lang: $route.params.lang},hash: '#history_timeline'}" class="btn btn-primary">{{ staticData.s1_2.link }}</nuxt-link>
</div>
</div>
</div>
@@ -247,7 +247,8 @@ export default {
title: this.staticData.title
}
},
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
const slider = await $axios.get('/api/public/slider')
const favoriteProducts = await $axios.get(`/api/public/favoriteProducts`)
const catalog = await $axios.get('/api/public/catalog')
@@ -257,6 +258,9 @@ export default {
favoriteProducts: favoriteProducts.data,
catalog: catalog.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -1
View File
@@ -177,13 +177,17 @@ export default {
title: this.product.product_details[this.$route.params.lang].name
}
},
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
let product = await $axios.get(`/api/public/product/${params.product}`)
let productCategories = await $axios.get(`/api/public/productCategories`)
return {
product: product.data,
productCategories: productCategories.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+5 -1
View File
@@ -106,7 +106,8 @@ export default {
title: this.staticData.hero
}
},
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
const products = await $axios.get(`/api/public/products`)
const productCategories = await $axios.get(`/api/public/productCategories`)
const catalog = await $axios.get('/api/public/catalog')
@@ -116,6 +117,9 @@ export default {
productCategories: productCategories.data,
catalog: catalog.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -1
View File
@@ -107,11 +107,15 @@ export default {
title: this.staticData.hero
}
},
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
const projects = await $axios.get(`/api/public/projects`)
return {
projects: projects.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+32 -32
View File
@@ -5,33 +5,33 @@
<div class="container">
<div class="panel">
<div class="top">
<h2 class="title">{{staticData.t1}}</h2>
<p class="subtitle">{{staticData.t2}}</p>
<h2 class="title">{{ staticData.t1 }}</h2>
<p class="subtitle">{{ staticData.t2 }}</p>
</div>
<div class="content">
<p>{{staticData.t3}}</p>
<h4>{{staticData.t4}}</h4>
<p>{{ staticData.t3 }}</p>
<h4>{{ staticData.t4 }}</h4>
<ul>
<li>
<p>{{staticData.t5}}</p>
<p>{{ staticData.t5 }}</p>
</li>
<li>
<p>{{staticData.t6}}</p>
<p>{{ staticData.t6 }}</p>
</li>
<li>
<p>{{staticData.t7}}</p>
<p>{{ staticData.t7 }}</p>
</li>
<li>
<p>{{staticData.t8}}</p>
<p>{{ staticData.t8 }}</p>
</li>
<li>
<p>{{staticData.t9}}</p>
<p>{{ staticData.t9 }}</p>
</li>
<li>
<p>{{staticData.t10}}</p>
<p>{{ staticData.t10 }}</p>
</li>
<li>
<p>{{staticData.t11}}</p>
<p>{{ staticData.t11 }}</p>
</li>
</ul>
<div class="images">
@@ -48,15 +48,15 @@
<div class="container">
<div class="panel">
<div class="parts p1">
<h2 class="title title-shape-center">{{staticData.t12}}</h2>
<p>{{staticData.t13}}</p>
<h2 class="title title-shape-center">{{ staticData.t12 }}</h2>
<p>{{ staticData.t13 }}</p>
</div>
<!-- image left -->
<div class="parts row align-items-center">
<div class="col-12 col-lg-6 order-1 order-lg-0">
<h2 class="title title-subtitle">{{staticData.t14}}</h2>
<p>{{staticData.t15}}</p>
<h2 class="title title-subtitle">{{ staticData.t14 }}</h2>
<p>{{ staticData.t15 }}</p>
</div>
<div class="col-12 col-lg-6 order-0 order-lg-1 mb-5 mb-lg-0">
<div class="imgBox imgBox-shape anim-fadeIn">
@@ -77,16 +77,16 @@
</div>
</div>
<div class="col-12 col-lg-6">
<h2 class="title title-subtitle">{{staticData.t16}}</h2>
<p>{{staticData.t17}}</p>
<h2 class="title title-subtitle">{{ staticData.t16 }}</h2>
<p>{{ staticData.t17 }}</p>
</div>
</div>
<!-- image left -->
<div class="parts row align-items-center">
<div class="col-12 col-lg-6 order-1 order-lg-0">
<h2 class="title title-subtitle">{{staticData.t18}}</h2>
<p>{{staticData.t19}}</p>
<h2 class="title title-subtitle">{{ staticData.t18 }}</h2>
<p>{{ staticData.t19 }}</p>
</div>
<div class="col-12 col-lg-6 order-0 order-lg-1 mb-5 mb-lg-0">
<div class="imgBox imgBox-shape anim-fadeIn">
@@ -107,16 +107,16 @@
</div>
</div>
<div class="col-12 col-lg-6">
<h2 class="title title-subtitle">{{staticData.t20}}</h2>
<p>{{staticData.t21}}</p>
<h2 class="title title-subtitle">{{ staticData.t20 }}</h2>
<p>{{ staticData.t21 }}</p>
</div>
</div>
<!-- image left -->
<div class="parts row align-items-center">
<div class="col-12 col-lg-6 order-1 order-lg-0">
<h2 class="title title-subtitle">{{staticData.t22}}</h2>
<p>{{staticData.t23}}</p>
<h2 class="title title-subtitle">{{ staticData.t22 }}</h2>
<p>{{ staticData.t23 }}</p>
</div>
<div class="col-12 col-lg-6 order-0 order-lg-1 mb-5 mb-lg-0">
<div class="imgBox imgBox-shape anim-fadeIn">
@@ -137,16 +137,16 @@
</div>
</div>
<div class="col-12 col-lg-6">
<h2 class="title title-subtitle">{{staticData.t24}}</h2>
<p>{{staticData.t25}}</p>
<h2 class="title title-subtitle">{{ staticData.t24 }}</h2>
<p>{{ staticData.t25 }}</p>
</div>
</div>
<!-- image left -->
<div class="parts row align-items-center">
<div class="col-12 col-lg-6 order-1 order-lg-0">
<h2 class="title title-subtitle">{{staticData.t26}}</h2>
<p>{{staticData.t27}}</p>
<h2 class="title title-subtitle">{{ staticData.t26 }}</h2>
<p>{{ staticData.t27 }}</p>
</div>
<div class="col-12 col-lg-6 order-0 order-lg-1 mb-5 mb-lg-0">
<div class="imgBox imgBox-shape anim-fadeIn">
@@ -167,8 +167,8 @@
</div>
</div>
<div class="col-12 col-lg-6">
<h2 class="title title-subtitle">{{staticData.t28}}</h2>
<p>{{staticData.t29}}</p>
<h2 class="title title-subtitle">{{ staticData.t28 }}</h2>
<p>{{ staticData.t29 }}</p>
</div>
</div>
@@ -180,9 +180,9 @@
<script>
import {fadeInAnimation, parallaxAnimation} from "~/mixins/animations"
import {fadeInAnimation, parallaxAnimation} from "~/mixins/animations"
export default {
export default {
computed: {
staticData() {
return this.$store.state.staticData.services[this.$route.params.lang]
@@ -194,5 +194,5 @@
title: this.staticData.hero
}
}
}
}
</script>
+29 -29
View File
@@ -5,56 +5,56 @@
<div class="container">
<div class="panel">
<div class="content gTech">
<h2 class="first">{{staticData.t1}}</h2>
<p>{{staticData.t2}}</p>
<h2 class="first">{{ staticData.t1 }}</h2>
<p>{{ staticData.t2 }}</p>
<br>
<br>
<br>
<p>
<b>{{staticData.t3}}</b>
<span>{{staticData.t4}}</span>
<b>{{ staticData.t3 }}</b>
<span>{{ staticData.t4 }}</span>
</p>
<p>
<b>{{staticData.t5}}</b>
<span>{{staticData.t6}}</span>
<b>{{ staticData.t5 }}</b>
<span>{{ staticData.t6 }}</span>
</p>
<p>
<b>{{staticData.t7}}</b>
<span>{{staticData.t8}}</span>
<b>{{ staticData.t7 }}</b>
<span>{{ staticData.t8 }}</span>
</p>
<p>
<b>{{staticData.t9}}</b>
<span>{{staticData.t10}}</span>
<b>{{ staticData.t9 }}</b>
<span>{{ staticData.t10 }}</span>
</p>
<p>
<b>{{staticData.t11}}</b>
<span>{{staticData.t12}}</span>
<b>{{ staticData.t11 }}</b>
<span>{{ staticData.t12 }}</span>
</p>
<p>
<b>{{staticData.t13}}</b>
<span>{{staticData.t14}}</span>
<b>{{ staticData.t13 }}</b>
<span>{{ staticData.t14 }}</span>
</p>
<p>
<b>{{staticData.t15}}</b>
<span>{{staticData.t16}}</span>
<b>{{ staticData.t15 }}</b>
<span>{{ staticData.t16 }}</span>
</p>
<p>
<b>{{staticData.t17}}</b>
<span>{{staticData.t18}}</span>
<b>{{ staticData.t17 }}</b>
<span>{{ staticData.t18 }}</span>
</p>
<p>
<b>{{staticData.t19}}</b>
<span>{{staticData.t20}}</span>
<b>{{ staticData.t19 }}</b>
<span>{{ staticData.t20 }}</span>
</p>
<p>
<b>{{staticData.t21}}</b>
<span>{{staticData.t22}}</span>
<b>{{ staticData.t21 }}</b>
<span>{{ staticData.t22 }}</span>
</p>
<p>{{staticData.t23}}</p>
<p>{{ staticData.t23 }}</p>
<div class="imgBox anim-fadeIn">
<img src="~/assets/img/tech-info/ti-Model-4.jpg" alt="">
<p>{{staticData.t24}}</p>
<p>{{ staticData.t24 }}</p>
</div>
</div>
</div>
@@ -64,8 +64,8 @@
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="title">{{staticData.t25}}</h2>
<nuxt-link :to="{name: 'lang-products',params: {lang: $route.params.lang}}" class="btn btn-primary">{{staticData.t26}}</nuxt-link>
<h2 class="title">{{ staticData.t25 }}</h2>
<nuxt-link :to="{name: 'lang-products',params: {lang: $route.params.lang}}" class="btn btn-primary">{{ staticData.t26 }}</nuxt-link>
</div>
</div>
</div>
@@ -75,9 +75,9 @@
</template>
<script>
import {fadeInAnimation} from "~/mixins/animations"
import {fadeInAnimation} from "~/mixins/animations"
export default {
export default {
computed: {
staticData() {
return this.$store.state.staticData.gTech[this.$route.params.lang]
@@ -89,5 +89,5 @@
title: this.staticData.title
}
}
}
}
</script>
+5 -1
View File
@@ -180,13 +180,17 @@ export default {
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
const post = await $axios.get(`/api/public/blog/${params.post}`)
const blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
post: post.data,
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+8 -4
View File
@@ -11,11 +11,11 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.blogCategory_details.fa.name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.blogCategory_details.en.name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -26,7 +26,7 @@
<script>
export default {
export default {
data() {
return {
formData: null,
@@ -92,11 +92,15 @@
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
const category = await $axios.get(`/api/public/blogCategories/${params.category}`)
return {
formData: category.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+6 -2
View File
@@ -41,7 +41,7 @@
<script>
export default {
export default {
data() {
return {
title: 'دسته بندی بلاگ',
@@ -87,11 +87,15 @@
}
},
layout: 'admin',
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
let blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -7
View File
@@ -11,11 +11,11 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.blogCategory_details.fa.name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.blogCategory_details.en.name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -26,7 +26,7 @@
<script>
export default {
export default {
data() {
return {
formData: {
@@ -89,11 +89,9 @@
})
} else {
this.$alert(error.response.data.message, 'خطا', {
confirmButtonText: 'باشه',
confirmButtonText: 'باشه'
})
}
})
}
},
@@ -103,5 +101,5 @@
}
},
layout: 'admin'
}
}
</script>
+7 -3
View File
@@ -40,7 +40,7 @@
label="دسته بندی"
width="">
<template slot-scope="scope">
{{categoryName(scope.row.category)}}
{{ categoryName(scope.row.category) }}
</template>
</el-table-column>
@@ -73,7 +73,7 @@
<script>
export default {
export default {
data() {
return {
title: 'لیست بلاگ',
@@ -120,13 +120,17 @@
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let posts = await $axios.get(`/api/public/blog`)
const blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
posts: posts.data,
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+15 -11
View File
@@ -12,7 +12,7 @@
<el-divider></el-divider>
<img :src="post.cover" alt="" style="width: 100%">
<input type="file" ref="cover" @change="preview">
<p class="err" v-if="validation.cover">{{validation.cover.msg}}</p>
<p class="err" v-if="validation.cover">{{ validation.cover.msg }}</p>
<el-form class="secondTitle">
<el-form-item prop="category" :class="validation.category ? 'is-error' : ''" label="دسته بندی">
@@ -24,7 +24,7 @@
:value="item._id">
</el-option>
</el-select>
<p class="err" v-if="validation.category">{{validation.category.msg}}</p>
<p class="err" v-if="validation.category">{{ validation.category.msg }}</p>
</el-form-item>
<el-form-item prop="published" label="وضعیت انتشار پست">
@@ -42,12 +42,12 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_title ? 'is-error' : ''" label="عنوان">
<el-input v-model="post.post_details.fa.title"></el-input>
<p class="err" v-if="validation.fa_title">{{validation.fa_title.msg}}</p>
<p class="err" v-if="validation.fa_title">{{ validation.fa_title.msg }}</p>
</el-form-item>
<el-form-item prop="short_description" :class="validation.fa_short_description ? 'is-error' : ''" label="توضیح کوتاه">
<el-input type="textarea" v-model="post.post_details.fa.short_description"></el-input>
<p class="err" v-if="validation.fa_short_description">{{validation.fa_short_description.msg}}</p>
<p class="err" v-if="validation.fa_short_description">{{ validation.fa_short_description.msg }}</p>
</el-form-item>
</el-form>
@@ -55,7 +55,7 @@
<h6 style="margin-bottom: 30px;">توضیحات پست</h6>
<client-only>
<ckeditor v-model="post.post_details.fa.description" :config="editorConfig"></ckeditor>
<p class="err" v-if="validation.fa_description">{{validation.fa_description.msg}}</p>
<p class="err" v-if="validation.fa_description">{{ validation.fa_description.msg }}</p>
</client-only>
</admin-panel>
</div>
@@ -68,12 +68,12 @@
<el-form>
<el-form-item prop="title" :class="validation.en_title ? 'is-error' : ''" label="عنوان">
<el-input v-model="post.post_details.en.title"></el-input>
<p class="err" v-if="validation.en_title">{{validation.en_title.msg}}</p>
<p class="err" v-if="validation.en_title">{{ validation.en_title.msg }}</p>
</el-form-item>
<el-form-item prop="short_description" :class="validation.en_short_description ? 'is-error' : ''" label="توضیح کوتاه">
<el-input type="textarea" v-model="post.post_details.en.short_description"></el-input>
<p class="err" v-if="validation.en_short_description">{{validation.en_short_description.msg}}</p>
<p class="err" v-if="validation.en_short_description">{{ validation.en_short_description.msg }}</p>
</el-form-item>
</el-form>
@@ -81,7 +81,7 @@
<h6 style="margin-bottom: 30px;">توضیحات پست</h6>
<client-only>
<ckeditor v-model="post.post_details.en.description" :config="editorConfig_en"></ckeditor>
<p class="err" v-if="validation.en_description">{{validation.en_description.msg}}</p>
<p class="err" v-if="validation.en_description">{{ validation.en_description.msg }}</p>
</client-only>
</admin-panel>
</div>
@@ -92,7 +92,7 @@
<script>
export default {
export default {
data() {
return {
post: {
@@ -188,7 +188,7 @@
})
},
preview(event) {
this.post.cover = URL.createObjectURL(event.target.files[0]);
this.post.cover = URL.createObjectURL(event.target.files[0])
}
},
head() {
@@ -197,11 +197,15 @@
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
const blogCategories = await $axios.get(`/api/public/blogCategories`)
return {
blogCategories: blogCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -1
View File
@@ -104,11 +104,15 @@ export default {
}
},
layout: 'admin',
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
let catalog = await $axios.get('/api/public/catalog')
return {
catalog: catalog.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+12 -8
View File
@@ -11,27 +11,27 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_title ? 'is-error' : ''" label="عنوان فارسی">
<el-input v-model="formData.history_details.fa.title"></el-input>
<p class="err" v-if="validation.fa_title">{{validation.fa_title.msg}}</p>
<p class="err" v-if="validation.fa_title">{{ validation.fa_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_title ? 'is-error' : ''" label="عنوان انگلیسی">
<el-input v-model="formData.history_details.en.title"></el-input>
<p class="err" v-if="validation.en_title">{{validation.en_title.msg}}</p>
<p class="err" v-if="validation.en_title">{{ validation.en_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.fa_caption ? 'is-error' : ''" label="توضیحات فارسی">
<el-input type="textarea" v-model="formData.history_details.fa.caption"></el-input>
<p class="err" v-if="validation.fa_caption">{{validation.fa_caption.msg}}</p>
<p class="err" v-if="validation.fa_caption">{{ validation.fa_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_caption ? 'is-error' : ''" label="توضیحات انگلیسی">
<el-input type="textarea" v-model="formData.history_details.en.caption"></el-input>
<p class="err" v-if="validation.en_caption">{{validation.en_caption.msg}}</p>
<p class="err" v-if="validation.en_caption">{{ validation.en_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.year ? 'is-error' : ''" label="سال">
<el-input v-model="formData.year" placeholder="سال را چهار رقمی و به شمسی وارد کنید. مثال: 1399"></el-input>
<p class="err" v-if="validation.year">{{validation.year.msg}}</p>
<p class="err" v-if="validation.year">{{ validation.year.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -42,7 +42,7 @@
<el-divider></el-divider>
<img :src="formData.image" alt="" style="width: 100%;max-width: 400px;display: block;">
<input type="file" ref="image" @change="preview">
<p class="err" v-if="validation.image">{{validation.image.msg}}</p>
<p class="err" v-if="validation.image">{{ validation.image.msg }}</p>
</admin-panel>
</div>
</div>
@@ -51,7 +51,7 @@
<script>
export default {
export default {
data() {
return {
formData: null,
@@ -127,11 +127,15 @@
}
},
layout: 'admin',
async asyncData({$axios, route}) {
async asyncData({$axios, route, error}) {
try {
const history = await $axios.get(`/api/public/history/${route.params.history}`)
return {
formData: history.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+8 -4
View File
@@ -61,7 +61,7 @@
<script>
export default {
export default {
data() {
return {
title: 'تاریخچه',
@@ -102,18 +102,22 @@
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let history = await $axios.get(`/api/public/history`)
return {
history: history.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
<style>
.el-table .el-table__body-wrapper .el-table__row .is-left{
.el-table .el-table__body-wrapper .el-table__row .is-left{
text-align: left !important;
}
}
</style>
+9 -9
View File
@@ -11,28 +11,28 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_title ? 'is-error' : ''" label="عنوان فارسی">
<el-input v-model="formData.fa_title"></el-input>
<p class="err" v-if="validation.fa_title">{{validation.fa_title.msg}}</p>
<p class="err" v-if="validation.fa_title">{{ validation.fa_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_title ? 'is-error' : ''" label="عنوان انگلیسی">
<el-input v-model="formData.en_title"></el-input>
<p class="err" v-if="validation.en_title">{{validation.en_title.msg}}</p>
<p class="err" v-if="validation.en_title">{{ validation.en_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.fa_caption ? 'is-error' : ''" label="توضیحات فارسی">
<el-input type="textarea" v-model="formData.fa_caption"></el-input>
<p class="err" v-if="validation.fa_caption">{{validation.fa_caption.msg}}</p>
<p class="err" v-if="validation.fa_caption">{{ validation.fa_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_caption ? 'is-error' : ''" label="توضیحات انگلیسی">
<el-input type="textarea" v-model="formData.en_caption"></el-input>
<p class="err" v-if="validation.en_caption">{{validation.en_caption.msg}}</p>
<p class="err" v-if="validation.en_caption">{{ validation.en_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.year ? 'is-error' : ''" label="سال">
<el-input v-model="formData.year" placeholder="سال را چهار رقمی و به شمسی وارد کنید. مثال: 1399"></el-input>
<p class="err" v-if="validation.year">{{validation.year.msg}}</p>
<p class="err" v-if="validation.year">{{ validation.year.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -43,7 +43,7 @@
<el-divider></el-divider>
<img :src="formData.image" alt="" style="width: 100%;max-width: 400px;display: block;">
<input type="file" ref="image" @change="preview">
<p class="err" v-if="validation.image">{{validation.image.msg}}</p>
<p class="err" v-if="validation.image">{{ validation.image.msg }}</p>
</admin-panel>
</div>
</div>
@@ -52,7 +52,7 @@
<script>
export default {
export default {
data() {
return {
formData: {
@@ -124,7 +124,7 @@
})
},
preview(event) {
this.formData.image = URL.createObjectURL(event.target.files[0]);
this.formData.image = URL.createObjectURL(event.target.files[0])
}
},
head() {
@@ -133,5 +133,5 @@
}
},
layout: 'admin'
}
}
</script>
+2 -4
View File
@@ -10,9 +10,7 @@
</template>
<script>
export default {
mounted() {
},
export default {
layout: 'admin'
}
}
</script>
+1 -1
View File
@@ -61,6 +61,6 @@ export default {
.login {
width: 100%;
max-width: 600px;
margin: 150px auto!important;
margin: 150px auto !important;
}
</style>
+8 -4
View File
@@ -39,7 +39,7 @@
<script>
export default {
export default {
data() {
return {
title: 'خواندن پیام',
@@ -62,18 +62,22 @@
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
const message = await $axios.get(`/api/private/contact/${params.message}`)
return {
message: message.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
<style>
.message input:disabled, .message textarea:disabled{
.message input:disabled, .message textarea:disabled{
color: #000 !important;
}
}
</style>
+14 -10
View File
@@ -11,11 +11,11 @@
<el-form>
<el-form-item :class="validation.fa_reason ? 'is-error' : null" label="فارسی">
<el-input v-model="newReason.fa"></el-input>
<p class="err" v-if="validation.fa_reason">{{validation.fa_reason.msg}}</p>
<p class="err" v-if="validation.fa_reason">{{ validation.fa_reason.msg }}</p>
</el-form-item>
<el-form-item :class="validation.en_reason ? 'is-error' : null" label="انگلیسی">
<el-input v-model="newReason.en"></el-input>
<p class="err" v-if="validation.en_reason">{{validation.en_reason.msg}}</p>
<p class="err" v-if="validation.en_reason">{{ validation.en_reason.msg }}</p>
</el-form-item>
<el-button @click="addReason" type="success">افزودن</el-button>
</el-form>
@@ -28,7 +28,7 @@
@close="removeReason(item._id)"
type="primary"
style="margin-left: 10px;">
{{item.reason_details.fa.reason}} | {{item.reason_details.en.reason}}
{{ item.reason_details.fa.reason }} | {{ item.reason_details.en.reason }}
</el-tag>
</div>
</div>
@@ -49,7 +49,7 @@
label="نام"
width="">
<template slot-scope="scope">
{{fullName(scope.row.first_name,scope.row.last_name)}}
{{ fullName(scope.row.first_name, scope.row.last_name) }}
</template>
</el-table-column>
@@ -91,7 +91,7 @@
<script>
export default {
export default {
data() {
return {
title: 'لیست پیام های ارتباط با ما',
@@ -163,25 +163,29 @@
}
},
layout: 'admin',
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
let messages = await $axios.get('/api/private/contact')
let reasons = await $axios.get('/api/public/contact/reason')
return {
messages: messages.data,
reasons: reasons.data
}
} catch (e) {
error({status: 404, message: 'there is a problem here'})
}
}
}
</script>
<style>
.phoneNumber div{
.phoneNumber div{
direction: ltr;
text-align: right
}
}
.unread{
.unread{
background: rgb(255, 173, 0, 0.12) !important;
}
}
</style>
+5 -1
View File
@@ -589,13 +589,17 @@ export default {
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
let product = await $axios.get(`/api/public/product/${params.product}`)
let productCategories = await $axios.get(`/api/public/productCategories`)
return {
formData: product.data,
productCategories: productCategories.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+8 -4
View File
@@ -12,12 +12,12 @@
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.category_details.fa.name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.category_details.en.name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
</el-form>
@@ -30,7 +30,7 @@
<script>
export default {
export default {
data() {
return {
formData: null,
@@ -94,11 +94,15 @@
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
const category = await $axios.get(`/api/public/productCategories/${params.category}`)
return {
formData: category.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+6 -2
View File
@@ -41,7 +41,7 @@
<script>
export default {
export default {
data() {
return {
title: 'دسته بندی محصولات',
@@ -88,11 +88,15 @@
}
},
layout: 'admin',
async asyncData({$axios}) {
async asyncData({$axios, error}) {
try {
let categories = await $axios.get(`/api/public/productCategories`);
return {
categories: categories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -6
View File
@@ -12,12 +12,12 @@
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.fa_name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.en_name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
</el-form>
@@ -29,7 +29,7 @@
<script>
export default {
export default {
data() {
return {
formData: {
@@ -85,8 +85,7 @@
})
} else {
this.$alert(error.response.data.message, 'خطا', {
confirmButtonText: 'باشه',
confirmButtonText: 'باشه'
})
}
})
@@ -98,5 +97,5 @@
}
},
layout: 'admin'
}
}
</script>
+5 -1
View File
@@ -130,13 +130,17 @@ export default {
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let products = await $axios.get(`/api/public/products`)
let productCategories = await $axios.get(`/api/public/productCategories`)
return {
products: products.data,
productCategories: productCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+5 -1
View File
@@ -435,11 +435,15 @@ export default {
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let productCategories = await $axios.get(`/api/public/productCategories`)
return {
productCategories: productCategories.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+14 -10
View File
@@ -11,30 +11,30 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.project_details.fa.name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.project_details.en.name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
<el-divider></el-divider>
<el-form-item prop="title" :class="validation.fa_description ? 'is-error' : ''" label="توضیح فارسی">
<el-input type="textarea" v-model="formData.project_details.fa.description"></el-input>
<p class="err" v-if="validation.fa_description">{{validation.fa_description.msg}}</p>
<p class="err" v-if="validation.fa_description">{{ validation.fa_description.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_description ? 'is-error' : ''" label="توضیح انگلیسی">
<el-input type="textarea" v-model="formData.project_details.en.description"></el-input>
<p class="err" v-if="validation.en_description">{{validation.en_description.msg}}</p>
<p class="err" v-if="validation.en_description">{{ validation.en_description.msg }}</p>
</el-form-item>
<el-divider></el-divider>
<el-form-item prop="date" :class="validation.date ? 'is-error' : ''" label="تاریخ اجرا">
<date-picker v-model="formData.date" format="YYYY-MM-DD" display-format="jYYYY/jMM/jDD"></date-picker>
<p class="err" v-if="validation.date">{{validation.date.msg}}</p>
<p class="err" v-if="validation.date">{{ validation.date.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -47,7 +47,7 @@
<div class="newImg">
<img :src="image" alt="" style="width: 100%;max-width: 300px;display: block">
<input type="file" ref="image" @change="previewGallery">
<p class="err" v-if="validation.image">{{validation.image.msg}}</p>
<p class="err" v-if="validation.image">{{ validation.image.msg }}</p>
<el-button type="primary" @click="addImage" style="margin-top: 10px;">افزودن</el-button>
</div>
<div class="images">
@@ -65,7 +65,7 @@
<script>
export default {
export default {
data() {
return {
formData: null,
@@ -195,18 +195,22 @@
}
},
layout: 'admin',
async asyncData({$axios, params}) {
async asyncData({$axios, params, error}) {
try {
let project = await $axios.get(`/api/public/projects/${params.project}`)
return {
formData: project.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
<style scoped lang="scss">
.images {
.images {
width: 100%;
margin-top: 30px;
@@ -233,5 +237,5 @@
right: 0;
}
}
}
}
</style>
+8 -4
View File
@@ -39,7 +39,7 @@
label="تاریخ اجرا"
width="">
<template slot-scope="scope">
{{jDate(scope.row.date)}}
{{ jDate(scope.row.date) }}
</template>
</el-table-column>
@@ -62,9 +62,9 @@
<script>
import moment from "moment-jalaali"
import moment from "moment-jalaali"
export default {
export default {
data() {
return {
title: 'لیست پروژه ها',
@@ -115,11 +115,15 @@
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let projects = await $axios.get(`/api/public/projects`)
return {
projects: projects.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
+8 -9
View File
@@ -16,30 +16,30 @@
<el-form-item prop="title" :class="validation.fa_name ? 'is-error' : ''" label="نام فارسی">
<el-input v-model="formData.project_details.fa.name"></el-input>
<p class="err" v-if="validation.fa_name">{{validation.fa_name.msg}}</p>
<p class="err" v-if="validation.fa_name">{{ validation.fa_name.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_name ? 'is-error' : ''" label="نام انگلیسی">
<el-input v-model="formData.project_details.en.name"></el-input>
<p class="err" v-if="validation.en_name">{{validation.en_name.msg}}</p>
<p class="err" v-if="validation.en_name">{{ validation.en_name.msg }}</p>
</el-form-item>
<el-divider></el-divider>
<el-form-item prop="title" :class="validation.fa_description ? 'is-error' : ''" label="توضیح فارسی">
<el-input type="textarea" v-model="formData.project_details.fa.description"></el-input>
<p class="err" v-if="validation.fa_description">{{validation.fa_description.msg}}</p>
<p class="err" v-if="validation.fa_description">{{ validation.fa_description.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_description ? 'is-error' : ''" label="توضیح انگلیسی">
<el-input type="textarea" v-model="formData.project_details.en.description"></el-input>
<p class="err" v-if="validation.en_description">{{validation.en_description.msg}}</p>
<p class="err" v-if="validation.en_description">{{ validation.en_description.msg }}</p>
</el-form-item>
<el-divider></el-divider>
<el-form-item prop="date" :class="validation.date ? 'is-error' : ''" label="تاریخ اجرا">
<date-picker v-model="formData.date" format="YYYY-MM-DD" display-format="jYYYY/jMM/jDD"></date-picker>
<p class="err" v-if="validation.date">{{validation.date.msg}}</p>
<p class="err" v-if="validation.date">{{ validation.date.msg }}</p>
</el-form-item>
</el-form>
@@ -52,7 +52,7 @@
<script>
export default {
export default {
data() {
return {
formData: {
@@ -120,8 +120,7 @@
})
} else {
this.$alert(error.response.data.message, 'خطا', {
confirmButtonText: 'باشه',
confirmButtonText: 'باشه'
})
}
})
@@ -133,5 +132,5 @@
}
},
layout: 'admin'
}
}
</script>
+13 -11
View File
@@ -11,22 +11,22 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_title ? 'is-error' : ''" label="عنوان فارسی">
<el-input v-model="formData.slider_details.fa.title"></el-input>
<p class="err" v-if="validation.fa_title">{{validation.fa_title.msg}}</p>
<p class="err" v-if="validation.fa_title">{{ validation.fa_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_title ? 'is-error' : ''" label="عنوان انگلیسی">
<el-input v-model="formData.slider_details.en.title"></el-input>
<p class="err" v-if="validation.en_title">{{validation.en_title.msg}}</p>
<p class="err" v-if="validation.en_title">{{ validation.en_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.fa_caption ? 'is-error' : ''" label="توضیحات فارسی">
<el-input v-model="formData.slider_details.fa.caption"></el-input>
<p class="err" v-if="validation.fa_caption">{{validation.fa_caption.msg}}</p>
<p class="err" v-if="validation.fa_caption">{{ validation.fa_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_caption ? 'is-error' : ''" label="توضیحات انگلیسی">
<el-input v-model="formData.slider_details.en.caption"></el-input>
<p class="err" v-if="validation.en_caption">{{validation.en_caption.msg}}</p>
<p class="err" v-if="validation.en_caption">{{ validation.en_caption.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -37,7 +37,7 @@
<el-divider></el-divider>
<img :src="formData.image" alt="" style="width: 100%">
<input type="file" ref="image" @change="preview">
<p class="err" v-if="validation.image">{{validation.image.msg}}</p>
<p class="err" v-if="validation.image">{{ validation.image.msg }}</p>
</admin-panel>
</div>
</div>
@@ -46,7 +46,7 @@
<script>
export default {
export default {
data() {
return {
formData: null,
@@ -104,15 +104,13 @@
})
} else {
this.$alert(error.response.data.error.message, 'خطا', {
confirmButtonText: 'باشه',
confirmButtonText: 'باشه'
})
}
})
},
preview(event) {
this.formData.image = URL.createObjectURL(event.target.files[0]);
this.formData.image = URL.createObjectURL(event.target.files[0])
}
},
head() {
@@ -121,11 +119,15 @@
}
},
layout: 'admin',
async asyncData({$axios, route}) {
async asyncData({$axios, route, error}) {
try {
const slide = await $axios.get(`/api/public/slider/${route.params.slide}`)
return {
formData: slide.data
}
} catch (e) {
error({status: 404, message: 'Page not found'})
}
}
}
</script>
+8 -4
View File
@@ -56,7 +56,7 @@
<script>
export default {
export default {
data() {
return {
title: 'اسلایدر',
@@ -97,18 +97,22 @@
}
},
layout: 'admin',
async asyncData({$axios, store}) {
async asyncData({$axios, store, error}) {
try {
let slides = await $axios.get(`/api/public/slider`)
return {
slides: slides.data
}
} catch (e) {
error({status: 404, message: 'There is a problem here'})
}
}
}
</script>
<style>
.el-table .el-table__body-wrapper .el-table__row .is-left{
.el-table .el-table__body-wrapper .el-table__row .is-left{
text-align: left !important;
}
}
</style>
+9 -11
View File
@@ -11,22 +11,22 @@
<el-form>
<el-form-item prop="title" :class="validation.fa_title ? 'is-error' : ''" label="عنوان فارسی">
<el-input v-model="formData.fa_title"></el-input>
<p class="err" v-if="validation.fa_title">{{validation.fa_title.msg}}</p>
<p class="err" v-if="validation.fa_title">{{ validation.fa_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_title ? 'is-error' : ''" label="عنوان انگلیسی">
<el-input v-model="formData.en_title"></el-input>
<p class="err" v-if="validation.en_title">{{validation.en_title.msg}}</p>
<p class="err" v-if="validation.en_title">{{ validation.en_title.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.fa_caption ? 'is-error' : ''" label="توضیحات فارسی">
<el-input v-model="formData.fa_caption"></el-input>
<p class="err" v-if="validation.fa_caption">{{validation.fa_caption.msg}}</p>
<p class="err" v-if="validation.fa_caption">{{ validation.fa_caption.msg }}</p>
</el-form-item>
<el-form-item prop="title" :class="validation.en_caption ? 'is-error' : ''" label="توضیحات انگلیسی">
<el-input v-model="formData.en_caption"></el-input>
<p class="err" v-if="validation.en_caption">{{validation.en_caption.msg}}</p>
<p class="err" v-if="validation.en_caption">{{ validation.en_caption.msg }}</p>
</el-form-item>
</el-form>
</admin-panel>
@@ -37,7 +37,7 @@
<el-divider></el-divider>
<img :src="formData.image" alt="" style="width: 100%">
<input type="file" ref="image" @change="preview">
<p class="err" v-if="validation.image">{{validation.image.msg}}</p>
<p class="err" v-if="validation.image">{{ validation.image.msg }}</p>
</admin-panel>
</div>
</div>
@@ -46,7 +46,7 @@
<script>
export default {
export default {
data() {
return {
formData: {
@@ -108,15 +108,13 @@
})
} else {
this.$alert(error.response.data.error.message, 'خطا', {
confirmButtonText: 'باشه',
confirmButtonText: 'باشه'
})
}
})
},
preview(event) {
this.formData.image = URL.createObjectURL(event.target.files[0]);
this.formData.image = URL.createObjectURL(event.target.files[0])
}
},
head() {
@@ -125,5 +123,5 @@
}
},
layout: 'admin'
}
}
</script>