Signed-off-by: Logaxn <logaxn@foxmail.com>

This commit is contained in:
Logaxn 2019-03-11 23:37:17 +08:00
parent 49ae4d9aee
commit 08e09565bd
13 changed files with 336 additions and 231 deletions

2
.gitignore vendored
View File

@ -12,7 +12,7 @@ test/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
/.idea/workspace.xml
.vscode
*.suo
*.ntvs*

View File

@ -0,0 +1,24 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="RIGHT_MARGIN" value="250" />
<option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="true" />
<codeStyleSettings language="HTML">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="PHP">
<option name="CLASS_BRACE_STYLE" value="1" />
<option name="METHOD_BRACE_STYLE" value="1" />
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

4
.idea/encodings.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

View File

@ -0,0 +1,15 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="HtmlUnknownAttribute" enabled="true" level="WARNING" enabled_by_default="true">
<option name="myValues">
<value>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="slot-scope" />
</list>
</value>
</option>
<option name="myCustomValuesEnabled" value="true" />
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="Node.js Core" />
</component>
</project>

9
.idea/misc.xml Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="WebPackConfiguration">
<option name="path" value="$PROJECT_DIR$/build/webpack.dev.conf.js" />
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/zealouscrm-vue.iml" filepath="$PROJECT_DIR$/.idea/zealouscrm-vue.iml" />
</modules>
</component>
</project>

8
.idea/zealouscrm-vue.iml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -41,7 +41,8 @@ module.exports = {
},
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
// 暂时禁用 Eslint todo
// ...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',

View File

@ -26,6 +26,8 @@ const messages = {
}
const i18n = new VueI18n({
// 暂时隐藏 i18n 警告 todo
silentTranslationWarn: true,
// set locale
// options: en | zh | es
locale: Cookies.get('language') || 'en',

View File

@ -42,7 +42,7 @@
<el-tag>{{ scope.row.type | typeFilter }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('table.author')" width="110px" align="center">
<el-table-column :label="$t('giftList.giftName')" width="110px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.author }}</span>
</template>
@ -81,7 +81,7 @@
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
<el-form ref="dataForm" :rules="rules" :model="temp" label-position="left" label-width="70px" style="width: 400px; margin-left:50px;">
@ -128,28 +128,32 @@
</template>
<script>
import { fetchList, fetchPv, createArticle, updateArticle } from '@/api/article'
import waves from '@/directive/waves' // Waves directive
import { parseTime } from '@/utils'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import {fetchList, fetchPv, createArticle, updateArticle} from '@/api/article'
import waves from '@/directive/waves' // Waves directive
import {parseTime} from '@/utils'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
const calendarTypeOptions = [
{ key: 'CN', display_name: 'China' },
{ key: 'US', display_name: 'USA' },
{ key: 'JP', display_name: 'Japan' },
{ key: 'EU', display_name: 'Eurozone' }
]
import local from './local'
// arr to obj ,such as { CN : "China", US : "USA" }
const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => {
const viewName = 'giftList'
const calendarTypeOptions = [
{key: 'CN', display_name: 'China'},
{key: 'US', display_name: 'USA'},
{key: 'JP', display_name: 'Japan'},
{key: 'EU', display_name: 'Eurozone'}
]
// arr to obj ,such as { CN : "China", US : "USA" }
const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => {
acc[cur.key] = cur.display_name
return acc
}, {})
}, {})
export default {
export default {
name: 'ComplexTable',
components: { Pagination },
directives: { waves },
components: {Pagination},
directives: {waves},
filters: {
statusFilter(status) {
const statusMap = {
@ -179,7 +183,7 @@ export default {
},
importanceOptions: [1, 2, 3],
calendarTypeOptions,
sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }],
sortOptions: [{label: 'ID Ascending', key: '+id'}, {label: 'ID Descending', key: '-id'}],
statusOptions: ['published', 'draft', 'deleted'],
showReviewer: false,
temp: {
@ -200,14 +204,22 @@ export default {
dialogPvVisible: false,
pvData: [],
rules: {
type: [{ required: true, message: 'type is required', trigger: 'change' }],
timestamp: [{ type: 'date', required: true, message: 'timestamp is required', trigger: 'change' }],
title: [{ required: true, message: 'title is required', trigger: 'blur' }]
type: [{required: true, message: 'type is required', trigger: 'change'}],
timestamp: [{type: 'date', required: true, message: 'timestamp is required', trigger: 'change'}],
title: [{required: true, message: 'title is required', trigger: 'blur'}]
},
downloadLoading: false
}
},
created() {
if (!this.$i18n.getLocaleMessage('en')[viewName]) {
for (let lang in local) {
const obj = {}
obj[viewName] = local[lang]
this.$i18n.mergeLocaleMessage(lang, obj)
}
}
this.getList()
},
methods: {
@ -235,7 +247,7 @@ export default {
row.status = status
},
sortChange(data) {
const { prop, order } = data
const {prop, order} = data
if (prop === 'id') {
this.sortByID(order)
}
@ -358,5 +370,5 @@ export default {
}))
}
}
}
}
</script>

11
src/views/gift/local.js Normal file
View File

@ -0,0 +1,11 @@
export default {
en: {
giftName: 'Name'
},
zh: {
giftName: '礼品'
},
es: {
giftName: 'Gift'
}
}