Initial commit: 积分兑换电商平台多商户版 MER-2.2

Made-with: Cursor
This commit is contained in:
apple
2026-03-08 20:07:52 +08:00
commit de02c8a3e1
4954 changed files with 703009 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
{{#if template}}
<template>
<div />
</template>
{{/if}}
{{#if script}}
<script>
export default { name: '{{properCase name}}', props: {}, data() { return {} }, created() {}, mounted() {}, methods:
{} }
</script>
{{/if}}
{{#if style}}
<style lang='scss' scoped>
</style>
{{/if}}

View File

@@ -0,0 +1,59 @@
const { notEmpty } = require('../utils.js');
module.exports = {
description: 'generate vue component',
prompts: [
{
type: 'input',
name: 'name',
message: 'component name please',
validate: notEmpty('name'),
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [
{
name: '<wxTemplate>',
value: 'template',
checked: true,
},
{
name: '<script>',
value: 'script',
checked: true,
},
{
name: 'style',
value: 'style',
checked: true,
},
],
validate(value) {
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
return 'Components require at least a <script> or <wxTemplate> tag.';
}
return true;
},
},
],
actions: (data) => {
const name = '{{properCase name}}';
const actions = [
{
type: 'add',
path: `src/components/${name}/index.vue`,
templateFile: 'plop-templates/component/index.hbs',
data: {
name: name,
template: data.blocks.includes('template'),
script: data.blocks.includes('script'),
style: data.blocks.includes('style'),
},
},
];
return actions;
},
};

View File

@@ -0,0 +1,15 @@
{{#if state}}
const state = {}
{{/if}}
{{#if mutations}}
const mutations = {}
{{/if}}
{{#if actions}}
const actions = {}
{{/if}}
export default { namespaced: true,
{{options}}
}

View File

@@ -0,0 +1,66 @@
const { notEmpty } = require('../utils.js');
module.exports = {
description: 'generate store',
prompts: [
{
type: 'input',
name: 'name',
message: 'store name please',
validate: notEmpty('name'),
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [
{
name: 'state',
value: 'state',
checked: true,
},
{
name: 'mutations',
value: 'mutations',
checked: true,
},
{
name: 'actions',
value: 'actions',
checked: true,
},
],
validate(value) {
if (!value.includes('state') || !value.includes('mutations')) {
return 'store require at least state and mutations';
}
return true;
},
},
],
actions(data) {
const name = '{{name}}';
const { blocks } = data;
const options = ['state', 'mutations'];
const joinFlag = `,
`;
if (blocks.length === 3) {
options.push('actions');
}
const actions = [
{
type: 'add',
path: `src/store/modules/${name}.js`,
templateFile: 'plop-templates/store/index.hbs',
data: {
options: options.join(joinFlag),
state: blocks.includes('state'),
mutations: blocks.includes('mutations'),
actions: blocks.includes('actions'),
},
},
];
return actions;
},
};

View File

@@ -0,0 +1,9 @@
exports.notEmpty = (name) => {
return (v) => {
if (!v || v.trim === '') {
return `${name} is required`;
} else {
return true;
}
};
};

View File

@@ -0,0 +1,18 @@
{{#if template}}
<template>
<div />
</template>
{{/if}}
{{#if script}}
<script>
export default { name: '{{properCase name}}', props: {}, data() { return {} }, created() {}, mounted() {}, methods:
{} }
</script>
{{/if}}
{{#if style}}
<style lang='scss' scoped>
</style>
{{/if}}

View File

@@ -0,0 +1,59 @@
const { notEmpty } = require('../utils.js');
module.exports = {
description: 'generate a view',
prompts: [
{
type: 'input',
name: 'name',
message: 'view name please',
validate: notEmpty('name'),
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [
{
name: '<wxTemplate>',
value: 'template',
checked: true,
},
{
name: '<script>',
value: 'script',
checked: true,
},
{
name: 'style',
value: 'style',
checked: true,
},
],
validate(value) {
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
return 'View require at least a <script> or <wxTemplate> tag.';
}
return true;
},
},
],
actions: (data) => {
const name = '{{name}}';
const actions = [
{
type: 'add',
path: `src/views/${name}/index.vue`,
templateFile: 'plop-templates/view/index.hbs',
data: {
name: name,
template: data.blocks.includes('template'),
script: data.blocks.includes('script'),
style: data.blocks.includes('style'),
},
},
];
return actions;
},
};