arms-app 1.0.67 → 1.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,206 +0,0 @@
1
- <template>
2
- <section class="listed-enterprises-page">
3
- <h1>上市企业</h1>
4
-
5
- <div class="filters">
6
- <el-form label-position="top" size="mini">
7
- <el-row :gutter="12">
8
- <el-col :span="6">
9
- <el-form-item label="股票名称">
10
- <el-input v-model="filters.stockName" size="mini" placeholder="请输入" clearable @keyup.enter.native="applyFilters" style="width: 100%" />
11
- </el-form-item>
12
- </el-col>
13
- <el-col :span="6">
14
- <el-form-item label="上市时间">
15
- <el-date-picker v-model="filters.listedDate" type="date" placeholder="请选择" size="mini" style="width: 100%" />
16
- </el-form-item>
17
- </el-col>
18
- <el-col :span="6">
19
- <el-form-item label="是否专精特新">
20
- <el-select v-model="filters.specialized" size="mini" placeholder="请选择" clearable style="width: 100%">
21
- <el-option :label="'是'" :value="true" />
22
- <el-option :label="'否'" :value="false" />
23
- </el-select>
24
- </el-form-item>
25
- </el-col>
26
- <el-col :span="6">
27
- <el-form-item label=" ">
28
- <el-button type="primary" size="mini" @click="applyFilters">查询</el-button>
29
- <el-button size="mini" @click="resetFilters">重置</el-button>
30
- </el-form-item>
31
- </el-col>
32
- </el-row>
33
- </el-form>
34
- </div>
35
-
36
- <el-table :data="pagedRows" border stripe size="small" @sort-change="onSortChange">
37
- <el-table-column type="index" label="序号" width="56" align="center" header-align="center" />
38
- <el-table-column prop="stockName" label="股票名称" min-width="160">
39
- <template slot-scope="scope">
40
- <div class="name-row">
41
- <span class="name">{{ scope.row.stockName }}</span>
42
- <span class="code">({{ scope.row.code }})</span>
43
- </div>
44
- <div class="sub-row">
45
- <el-tag size="mini">{{ scope.row.exchange }}</el-tag>
46
- </div>
47
- </template>
48
- </el-table-column>
49
- <el-table-column prop="customerTags" label="客户标签" min-width="160">
50
- <template slot-scope="scope">
51
- <div class="tag-list">
52
- <el-tag v-for="(t,i) in (scope.row.customerTags || [])" :key="i" size="mini" type="info">{{ t }}</el-tag>
53
- </div>
54
- </template>
55
- </el-table-column>
56
- <el-table-column prop="listedDate" label="上市时间" min-width="120" sortable="custom">
57
- <template slot-scope="scope">{{ formatDate(scope.row.listedDate) }}</template>
58
- </el-table-column>
59
- <el-table-column prop="exchange" label="交易所" min-width="120" />
60
- <el-table-column prop="code" label="股票代码" min-width="120" />
61
- <el-table-column prop="marketCap" label="当前市值" min-width="140" align="right" sortable="custom">
62
- <template slot-scope="scope">{{ formatCurrency(scope.row.marketCap) }}</template>
63
- </el-table-column>
64
- <el-table-column prop="peTtm" label="市盈率TTM" min-width="120" align="right" sortable="custom">
65
- <template slot-scope="scope">{{ formatNumber(scope.row.peTtm) }}</template>
66
- </el-table-column>
67
- <el-table-column prop="companyName" label="企业名称" min-width="180" />
68
- <el-table-column prop="industryDomain" label="行业领域" min-width="140" />
69
- <el-table-column prop="hq" label="总部" min-width="120" />
70
- <el-table-column prop="registeredRegion" label="注册地区" min-width="120" />
71
- <el-table-column prop="establishedDate" label="成立时间" min-width="120" sortable="custom">
72
- <template slot-scope="scope">{{ formatDate(scope.row.establishedDate) }}</template>
73
- </el-table-column>
74
- <el-table-column prop="issuePrice" label="发行价" min-width="120" align="right" sortable="custom">
75
- <template slot-scope="scope">{{ formatCurrency(scope.row.issuePrice) }}</template>
76
- </el-table-column>
77
- <el-table-column prop="raisedAmount" label="实际募集" min-width="140" align="right" sortable="custom">
78
- <template slot-scope="scope">{{ formatCurrency(scope.row.raisedAmount) }}</template>
79
- </el-table-column>
80
- <el-table-column prop="vcBacked" label="是否创投" min-width="100" align="center">
81
- <template slot-scope="scope">{{ scope.row.vcBacked ? '是' : '否' }}</template>
82
- </el-table-column>
83
- <el-table-column prop="totalRounds" label="累计融资数" min-width="120" align="center" sortable="custom" />
84
- <el-table-column prop="totalFinancing" label="累计融资金额" min-width="160" align="right" sortable="custom">
85
- <template slot-scope="scope">{{ formatCurrency(scope.row.totalFinancing) }}</template>
86
- </el-table-column>
87
- <el-table-column prop="investorCount" label="参与机构数" min-width="120" align="center" sortable="custom" />
88
- </el-table>
89
-
90
- <div class="pager">
91
- <el-pagination
92
- layout="prev, pager, next, sizes, total"
93
- :current-page.sync="page.current"
94
- :page-size.sync="page.size"
95
- :page-sizes="[10,20,30,50]"
96
- :total="filteredRows.length"
97
- @current-change="onPageChange"
98
- @size-change="onSizeChange"
99
- />
100
- </div>
101
- </section>
102
- </template>
103
-
104
- <script>
105
- export default {
106
- name: 'ListedEnterprisesView',
107
- data() {
108
- return {
109
- filters: { stockName: '', listedDate: null, specialized: null },
110
- sort: { prop: '', order: '' },
111
- page: { current: 1, size: 10 },
112
- rows: [
113
- { stockName: '北一金', companyName: '北一金能源技术', code: '000001', exchange: '沪深A股', customerTags: ['重点客户'], listedDate: '2024-03-21', marketCap: 185032000000, peTtm: 28.3, industryDomain: '能源', hq: '北京', registeredRegion: '北京', establishedDate: '2016-05-12', issuePrice: 12.68, raisedAmount: 300000000, vcBacked: true, totalRounds: 6, totalFinancing: 1200000000, investorCount: 12 },
114
- { stockName: '星海科技', companyName: '星海科技股份有限公司', code: '000022', exchange: '科创板', customerTags: ['战略客户'], listedDate: '2023-11-01', marketCap: 60011000000, peTtm: 45.8, industryDomain: '科技', hq: '北京', registeredRegion: '北京', establishedDate: '2018-01-10', issuePrice: 38.20, raisedAmount: 150000000, vcBacked: true, totalRounds: 4, totalFinancing: 520000000, investorCount: 8 },
115
- { stockName: '优选消费', companyName: '优选消费集团', code: '000014', exchange: '沪深A股', customerTags: ['普通客户'], listedDate: '2019-06-02', marketCap: 20513000000, peTtm: 18.6, industryDomain: '消费', hq: '福建', registeredRegion: '福建', establishedDate: '2007-08-11', issuePrice: 9.50, raisedAmount: 60000000, vcBacked: false, totalRounds: 2, totalFinancing: 120000000, investorCount: 5 },
116
- { stockName: '恒材材料', companyName: '恒材新材料股份', code: '000015', exchange: '科创板', customerTags: ['新材料'], listedDate: '2024-10-21', marketCap: 15844000000, peTtm: 32.1, industryDomain: '材料', hq: '上海', registeredRegion: '上海', establishedDate: '2020-04-17', issuePrice: 21.30, raisedAmount: 90000000, vcBacked: false, totalRounds: 3, totalFinancing: 210000000, investorCount: 7 },
117
- { stockName: '联通通信', companyName: '联通通信科技', code: '000016', exchange: '沪深A股', customerTags: ['战略客户'], listedDate: '2023-08-01', marketCap: 72002000000, peTtm: 22.9, industryDomain: '通信', hq: '广东', registeredRegion: '广东', establishedDate: '2005-06-02', issuePrice: 16.80, raisedAmount: 200000000, vcBacked: true, totalRounds: 7, totalFinancing: 980000000, investorCount: 15 },
118
- { stockName: '远景能源', companyName: '远景能源集团', code: '000017', exchange: '沪深A股', customerTags: ['普通客户'], listedDate: '2022-10-10', marketCap: 40821000000, peTtm: 19.2, industryDomain: '能源', hq: '内蒙古', registeredRegion: '内蒙古', establishedDate: '2010-12-13', issuePrice: 11.20, raisedAmount: 100000000, vcBacked: false, totalRounds: 4, totalFinancing: 430000000, investorCount: 9 },
119
- { stockName: '康宁医药', companyName: '康宁医药集团', code: '000013', exchange: '创业板', customerTags: ['后备供应商'], listedDate: '2024-03-09', marketCap: 28566000000, peTtm: 35.6, industryDomain: '医药', hq: '四川', registeredRegion: '四川', establishedDate: '2019-05-09', issuePrice: 23.50, raisedAmount: 50000000, vcBacked: true, totalRounds: 2, totalFinancing: 150000000, investorCount: 6 }
120
- ]
121
- };
122
- },
123
- computed: {
124
- filteredRows() {
125
- const name = (this.filters.stockName || '').trim().toLowerCase();
126
- const listedDate = this.filters.listedDate ? this.formatDate(this.filters.listedDate) : '';
127
- const specialized = this.filters.specialized;
128
- return this.rows.filter(r => {
129
- const okName = name ? (r.stockName.toLowerCase().includes(name) || r.code.toLowerCase().includes(name)) : true;
130
- const okDate = listedDate ? this.formatDate(r.listedDate) === listedDate : true;
131
- const okSpec = specialized === null ? true : r.vcBacked === specialized;
132
- return okName && okDate && okSpec;
133
- });
134
- },
135
- sortedRows() {
136
- const arr = this.filteredRows.slice();
137
- const { prop, order } = this.sort;
138
- if (!prop || !order) return arr;
139
- arr.sort((a, b) => {
140
- const va = a[prop];
141
- const vb = b[prop];
142
- if (prop === 'listedDate' || prop === 'establishedDate') {
143
- const ta = new Date(va).getTime();
144
- const tb = new Date(vb).getTime();
145
- return order === 'ascending' ? ta - tb : tb - ta;
146
- }
147
- if (typeof va === 'number' && typeof vb === 'number') {
148
- return order === 'ascending' ? va - vb : vb - va;
149
- }
150
- const sa = String(va || '').localeCompare(String(vb || ''));
151
- return order === 'ascending' ? sa : -sa;
152
- });
153
- return arr;
154
- },
155
- pagedRows() {
156
- const start = (this.page.current - 1) * this.page.size;
157
- return this.sortedRows.slice(start, start + this.page.size);
158
- }
159
- },
160
- methods: {
161
- applyFilters() {
162
- this.page.current = 1;
163
- },
164
- resetFilters() {
165
- this.filters = { stockName: '', listedDate: null, specialized: null };
166
- this.page.current = 1;
167
- },
168
- onSortChange({ prop, order }) {
169
- this.sort = { prop, order };
170
- this.page.current = 1;
171
- },
172
- onPageChange(p) {
173
- this.page.current = p;
174
- },
175
- onSizeChange(s) {
176
- this.page.size = s;
177
- this.page.current = 1;
178
- },
179
- formatDate(d) {
180
- if (!d) return '';
181
- const x = new Date(d);
182
- const y = x.getFullYear();
183
- const m = String(x.getMonth() + 1).padStart(2, '0');
184
- const day = String(x.getDate()).padStart(2, '0');
185
- return `${y}-${m}-${day}`;
186
- },
187
- formatCurrency(n) {
188
- const v = Number(n) || 0;
189
- return v.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
190
- },
191
- formatNumber(n) {
192
- const v = Number(n) || 0;
193
- return v.toLocaleString('zh-CN');
194
- }
195
- }
196
- };
197
- </script>
198
-
199
- <style scoped>
200
- .listed-enterprises-page { padding: 24px; }
201
- .name-row { display: flex; align-items: baseline; gap: 6px; }
202
- .name { font-weight: 600; }
203
- .code { color: #909399; }
204
- .tag-list { display: flex; gap: 6px; flex-wrap: wrap; }
205
- .pager { margin-top: 12px; }
206
- </style>
@@ -1,195 +0,0 @@
1
- <template>
2
- <section class="listed-inc-page">
3
- <h1>上市增定企业</h1>
4
-
5
- <div class="filters">
6
- <el-form label-position="top" size="mini">
7
- <el-row :gutter="12">
8
- <el-col :span="5">
9
- <el-form-item label="企业名称">
10
- <el-input v-model="filters.name" size="mini" placeholder="请输入" clearable @keyup.enter.native="applyFilters" style="width: 100%" />
11
- </el-form-item>
12
- </el-col>
13
- <el-col :span="5">
14
- <el-form-item label="地区">
15
- <el-select v-model="filters.region" size="mini" placeholder="请选择" clearable filterable style="width: 100%">
16
- <el-option v-for="opt in regionOptions" :key="opt" :label="opt" :value="opt" />
17
- </el-select>
18
- </el-form-item>
19
- </el-col>
20
- <el-col :span="5">
21
- <el-form-item label="交易所">
22
- <el-select v-model="filters.exchange" size="mini" placeholder="请选择" clearable filterable style="width: 100%">
23
- <el-option v-for="opt in exchangeOptions" :key="opt" :label="opt" :value="opt" />
24
- </el-select>
25
- </el-form-item>
26
- </el-col>
27
- <el-col :span="5">
28
- <el-form-item label="是否专精特新">
29
- <el-select v-model="filters.specialized" size="mini" placeholder="请选择" clearable style="width: 100%">
30
- <el-option :label="'是'" :value="true" />
31
- <el-option :label="'否'" :value="false" />
32
- </el-select>
33
- </el-form-item>
34
- </el-col>
35
- <el-col :span="4">
36
- <el-form-item label=" ">
37
- <el-button type="primary" size="mini" @click="applyFilters">查询</el-button>
38
- <el-button size="mini" @click="resetFilters">重置</el-button>
39
- </el-form-item>
40
- </el-col>
41
- </el-row>
42
- </el-form>
43
- </div>
44
-
45
- <el-table :data="pagedRows" border stripe size="small" @sort-change="onSortChange">
46
- <el-table-column type="index" label="序号" width="56" align="center" header-align="center" />
47
- <el-table-column prop="shortName" label="企业简称" min-width="140" />
48
- <el-table-column prop="business" label="业务" min-width="140" />
49
- <el-table-column prop="name" label="企业名称" min-width="180">
50
- <template slot-scope="scope">
51
- <div class="name-row">
52
- <span class="name">{{ scope.row.name }}</span>
53
- <span class="code">({{ scope.row.code }})</span>
54
- </div>
55
- </template>
56
- </el-table-column>
57
- <el-table-column prop="customerTags" label="客户标签" min-width="160">
58
- <template slot-scope="scope">
59
- <div class="tag-list">
60
- <el-tag v-for="(t,i) in (scope.row.customerTags || [])" :key="i" size="mini" type="info">{{ t }}</el-tag>
61
- </div>
62
- </template>
63
- </el-table-column>
64
- <el-table-column prop="industryDomain" label="行业领域" min-width="140" />
65
- <el-table-column prop="registeredRegion" label="注册地区" min-width="120" />
66
- <el-table-column prop="establishedDate" label="成立时间" min-width="120" sortable="custom">
67
- <template slot-scope="scope">{{ formatDate(scope.row.establishedDate) }}</template>
68
- </el-table-column>
69
- <el-table-column prop="round" label="当前轮次" min-width="120" />
70
- <el-table-column prop="latestInvestDate" label="最新投资时间" min-width="140" sortable="custom">
71
- <template slot-scope="scope">{{ formatDate(scope.row.latestInvestDate) }}</template>
72
- </el-table-column>
73
- <el-table-column prop="latestAmount" label="最新融资金额" min-width="140" sortable="custom" align="right">
74
- <template slot-scope="scope">{{ formatCurrency(scope.row.latestAmount) }}</template>
75
- </el-table-column>
76
- <el-table-column prop="latestAmountCNY" label="最新融资金额(人民币)" min-width="180" align="right">
77
- <template slot-scope="scope">{{ formatCurrency(scope.row.latestAmountCNY) }}</template>
78
- </el-table-column>
79
- <el-table-column prop="investors" label="投资方" min-width="200">
80
- <template slot-scope="scope">{{ Array.isArray(scope.row.investors) ? scope.row.investors.join('、') : scope.row.investors }}</template>
81
- </el-table-column>
82
- <el-table-column prop="registeredCapital" label="注册资本" min-width="120" align="right">
83
- <template slot-scope="scope">{{ formatCurrency(scope.row.registeredCapital) }}</template>
84
- </el-table-column>
85
- <el-table-column prop="valuation" label="市值/估值" min-width="140" align="right">
86
- <template slot-scope="scope">{{ formatCurrency(scope.row.valuation) }}</template>
87
- </el-table-column>
88
- <el-table-column prop="totalRounds" label="累计融资次数" min-width="140" sortable="custom" align="center" />
89
- <el-table-column prop="totalFinancing" label="累计融资金额" min-width="140" sortable="custom" align="right">
90
- <template slot-scope="scope">{{ formatCurrency(scope.row.totalFinancing) }}</template>
91
- </el-table-column>
92
- <el-table-column prop="legalRep" label="法人代表" min-width="120" />
93
- </el-table>
94
-
95
- <div class="pager">
96
- <el-pagination
97
- layout="prev, pager, next, sizes, total"
98
- :current-page.sync="page.current"
99
- :page-size.sync="page.size"
100
- :page-sizes="[10,20,30,50]"
101
- :total="filteredRows.length"
102
- @current-change="onPageChange"
103
- @size-change="onSizeChange"
104
- />
105
- </div>
106
- </section>
107
- </template>
108
-
109
- <script>
110
- export default {
111
- name: 'ListedIncrementalEnterprisesView',
112
- data() {
113
- return {
114
- filters: { name: '', region: '', exchange: '', specialized: null },
115
- sort: { prop: '', order: '' },
116
- page: { current: 1, size: 10 },
117
- regionOptions: ['北京','上海','广东','浙江','江苏','四川','香港','内蒙古','安徽','福建','深圳','山东','河南'],
118
- exchangeOptions: ['沪深A股','科创板','创业板','港股','北交所'],
119
- rows: [
120
- { shortName: '北一金', business: '能源服务', name: '北一金能源技术', code: '000001', customerTags: ['重点客户'], industryDomain: '能源', registeredRegion: '北京', region: '北京', exchange: '沪深A股', specialized: true, establishedDate: '2016-05-12', round: 'D轮', latestInvestDate: '2024-09-18', latestAmount: 300000000, latestAmountCNY: 300000000, investors: ['高瓴资本','红杉中国'], registeredCapital: 80000000, valuation: 185032000000, totalRounds: 6, totalFinancing: 1200000000, legalRep: '张三' },
121
- { shortName: '星海科技', business: 'AI软件', name: '星海科技股份有限公司', code: '000022', customerTags: ['战略客户'], industryDomain: '科技', registeredRegion: '北京', region: '北京', exchange: '科创板', specialized: true, establishedDate: '2018-01-10', round: 'C轮', latestInvestDate: '2023-11-01', latestAmount: 150000000, latestAmountCNY: 150000000, investors: ['IDO基金'], registeredCapital: 50000000, valuation: 60011000000, totalRounds: 4, totalFinancing: 520000000, legalRep: '李四' },
122
- { shortName: '华源制造', business: '装备制造', name: '华源制造有限公司', code: '000003', customerTags: ['普通客户'], industryDomain: '制造', registeredRegion: '江苏', region: '江苏', exchange: '沪深A股', specialized: false, establishedDate: '2012-03-21', round: 'B轮', latestInvestDate: '2022-06-15', latestAmount: 80000000, latestAmountCNY: 80000000, investors: ['工银投资'], registeredCapital: 30000000, valuation: 56077000000, totalRounds: 3, totalFinancing: 210000000, legalRep: '王五' },
123
- { shortName: '锦泰金融', business: '金融服务', name: '锦泰金融控股', code: '000020', customerTags: ['重点供应商'], industryDomain: '金融', registeredRegion: '香港', region: '香港', exchange: '港股', specialized: false, establishedDate: '2009-10-20', round: 'Pre-IPO', latestInvestDate: '2014-09-28', latestAmount: 120000000, latestAmountCNY: 120000000, investors: ['摩根大通'], registeredCapital: 200000000, valuation: 139077000000, totalRounds: 5, totalFinancing: 650000000, legalRep: '赵六' },
124
- { shortName: '康宁医药', business: '制药', name: '康宁医药集团', code: '000013', customerTags: ['后备供应商'], industryDomain: '医药', registeredRegion: '四川', region: '四川', exchange: '创业板', specialized: true, establishedDate: '2019-05-09', round: 'A轮', latestInvestDate: '2024-03-09', latestAmount: 50000000, latestAmountCNY: 50000000, investors: ['博裕资本'], registeredCapital: 25000000, valuation: 28566000000, totalRounds: 2, totalFinancing: 150000000, legalRep: '孙八' },
125
- { shortName: '恒材材料', business: '新材料', name: '恒材新材料股份', code: '000015', customerTags: ['新材料'], industryDomain: '材料', registeredRegion: '上海', region: '上海', exchange: '科创板', specialized: false, establishedDate: '2020-04-17', round: 'B轮', latestInvestDate: '2024-10-21', latestAmount: 90000000, latestAmountCNY: 90000000, investors: ['启明创投'], registeredCapital: 20000000, valuation: 15844000000, totalRounds: 3, totalFinancing: 210000000, legalRep: '周九' },
126
- { shortName: '联通通信', business: '通讯设备', name: '联通通信科技', code: '000016', customerTags: ['战略客户'], industryDomain: '通信', registeredRegion: '广东', region: '广东', exchange: '沪深A股', specialized: true, establishedDate: '2005-06-02', round: 'E轮', latestInvestDate: '2023-08-01', latestAmount: 200000000, latestAmountCNY: 200000000, investors: ['中金资本'], registeredCapital: 120000000, valuation: 72002000000, totalRounds: 7, totalFinancing: 980000000, legalRep: '吴十' },
127
- { shortName: '远景能源', business: '新能源', name: '远景能源集团', code: '000017', customerTags: ['普通客户'], industryDomain: '能源', registeredRegion: '内蒙古', region: '内蒙古', exchange: '沪深A股', specialized: false, establishedDate: '2010-12-13', round: 'C轮', latestInvestDate: '2022-10-10', latestAmount: 100000000, latestAmountCNY: 100000000, investors: ['中新资本'], registeredCapital: 45000000, valuation: 40821000000, totalRounds: 4, totalFinancing: 430000000, legalRep: '钱七' },
128
- { shortName: '优选消费', business: '消费品', name: '优选消费集团', code: '000014', customerTags: ['普通客户'], industryDomain: '消费', registeredRegion: '福建', region: '福建', exchange: '沪深A股', specialized: false, establishedDate: '2007-08-11', round: 'A轮', latestInvestDate: '2019-06-02', latestAmount: 60000000, latestAmountCNY: 60000000, investors: ['真格基金'], registeredCapital: 30000000, valuation: 20513000000, totalRounds: 2, totalFinancing: 120000000, legalRep: '郑一' },
129
- { shortName: '迅捷科技', business: '软件平台', name: '迅捷科技有限公司', code: '000010', customerTags: ['重点客户'], industryDomain: '科技', registeredRegion: '上海', region: '上海', exchange: '科创板', specialized: true, establishedDate: '2016-10-12', round: 'D轮', latestInvestDate: '2024-04-12', latestAmount: 260000000, latestAmountCNY: 260000000, investors: ['源码资本'], registeredCapital: 60000000, valuation: 61578000000, totalRounds: 5, totalFinancing: 960000000, legalRep: '冯二' }
130
- ]
131
- };
132
- },
133
- computed: {
134
- filteredRows() {
135
- const name = (this.filters.name || '').trim().toLowerCase();
136
- const region = this.filters.region || '';
137
- const exchange = this.filters.exchange || '';
138
- const specialized = this.filters.specialized;
139
- return this.rows.filter(r => {
140
- const okName = name ? r.name.toLowerCase().includes(name) : true;
141
- const okRegion = region ? r.region === region : true;
142
- const okEx = exchange ? r.exchange === exchange : true;
143
- const okSpec = specialized === null ? true : r.specialized === specialized;
144
- return okName && okRegion && okEx && okSpec;
145
- });
146
- },
147
- sortedRows() {
148
- return this.filteredRows;
149
- },
150
- pagedRows() {
151
- const start = (this.page.current - 1) * this.page.size;
152
- return this.sortedRows.slice(start, start + this.page.size);
153
- }
154
- },
155
- methods: {
156
- applyFilters() {
157
- this.page.current = 1;
158
- },
159
- resetFilters() {
160
- this.filters = { name: '', region: '', exchange: '', specialized: null };
161
- this.page.current = 1;
162
- },
163
- onSortChange({ prop, order }) {
164
- this.sort = { prop, order };
165
- this.page.current = 1;
166
- },
167
- onPageChange(p) {
168
- this.page.current = p;
169
- },
170
- onSizeChange(s) {
171
- this.page.size = s;
172
- this.page.current = 1;
173
- },
174
- formatDate(d) {
175
- if (!d) return '';
176
- const x = new Date(d);
177
- const y = x.getFullYear();
178
- const m = String(x.getMonth() + 1).padStart(2, '0');
179
- const day = String(x.getDate()).padStart(2, '0');
180
- return `${y}-${m}-${day}`;
181
- },
182
- formatBn(n) {
183
- const v = Number(n) || 0;
184
- return v.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
185
- },
186
- formatCurrency(n) {
187
- const v = Number(n) || 0;
188
- return v.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
189
- }
190
- }
191
- };
192
- </script>
193
-
194
- <style scoped>
195
- </style>
package/view/index.html DELETED
@@ -1,51 +0,0 @@
1
-
2
- <!DOCTYPE html>
3
- <html lang="zh-CN">
4
- <head>
5
- <meta charset="utf-8">
6
- <meta name="viewport" content="width=device-width,initial-scale=1">
7
- <title>组件配置 | vue-seamless-scroll</title>
8
- <meta name="generator" content="VuePress 1.7.1">
9
- <link rel="icon" href="/vue-seamless-scroll/favicon.ico">
10
- <meta name="description" content="一个简单的基于vue.js的无缝滚动">
11
-
12
- <link rel="preload" href="/vue-seamless-scroll/assets/css/0.styles.7a7ce972.css" as="style"><link rel="preload" href="/vue-seamless-scroll/assets/js/app.e6add531.js" as="script"><link rel="preload" href="/vue-seamless-scroll/assets/js/4.9443f729.js" as="script"><link rel="preload" href="/vue-seamless-scroll/assets/js/58.3faf7da5.js" as="script"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/10.044c202a.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/11.0d8d3acd.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/12.854458d6.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/13.f372ccbc.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/14.ee65a065.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/15.d36b6094.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/16.fd662dcc.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/17.e15d206e.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/18.3905f91a.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/19.199011dd.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/20.60d5b3d7.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/21.a23f0991.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/22.adb154cf.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/23.0ae3f686.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/24.e78fdd6c.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/25.9ec75b8d.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/26.fb8a8125.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/27.5a8755fb.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/28.212a5fe3.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/29.bbaa6555.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/3.90f6539a.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/30.f2f31f45.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/31.fb204240.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/32.0e5c5de3.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/33.1f1e2abb.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/34.204c443a.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/35.7e5eda2a.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/36.de74c051.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/37.df6629ae.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/38.874d9de3.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/39.8902017f.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/40.66a50291.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/41.7a1474af.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/42.435f2267.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/43.b12c5f61.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/44.7397b1ef.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/45.79224337.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/46.110e43c4.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/47.a013474e.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/48.c75dca23.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/49.ccf19be1.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/5.4c810dc1.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/50.0f44a2eb.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/51.2fed45df.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/52.474de411.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/53.2f5abe52.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/54.f7fb638e.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/55.1ac332fa.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/56.f768f786.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/57.d2aa2722.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/59.e1c0308b.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/6.7d81d8b9.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/7.d9d26d03.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/8.141cb8b9.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/9.0d24bff0.js"><link rel="prefetch" href="/vue-seamless-scroll/assets/js/vendors~docsearch.04b5518a.js">
13
- <link rel="stylesheet" href="/vue-seamless-scroll/assets/css/0.styles.7a7ce972.css">
14
- </head>
15
- <body>
16
- <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/vue-seamless-scroll/zh/" class="home-link router-link-active"><!----> <span class="site-name">vue-seamless-scroll</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/vue-seamless-scroll/zh/" class="nav-link">
17
- 主页
18
- </a></div><div class="nav-item"><a href="/vue-seamless-scroll/zh/guide/" class="nav-link router-link-active">
19
- 指南
20
- </a></div><div class="nav-item"><a href="/vue-seamless-scroll/zh/changelog/" class="nav-link">
21
- 更新日志
22
- </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/vue-seamless-scroll/guide/properties.html" class="nav-link">
23
- English
24
- </a></li><li class="dropdown-item"><!----> <a href="/vue-seamless-scroll/zh/guide/properties.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
25
- 简体中文
26
- </a></li></ul></div></div> <a href="https://github.com/chenxuan0000/vue-seamless-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
27
- GitHub
28
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/vue-seamless-scroll/zh/" class="nav-link">
29
- 主页
30
- </a></div><div class="nav-item"><a href="/vue-seamless-scroll/zh/guide/" class="nav-link router-link-active">
31
- 指南
32
- </a></div><div class="nav-item"><a href="/vue-seamless-scroll/zh/changelog/" class="nav-link">
33
- 更新日志
34
- </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/vue-seamless-scroll/guide/properties.html" class="nav-link">
35
- English
36
- </a></li><li class="dropdown-item"><!----> <a href="/vue-seamless-scroll/zh/guide/properties.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
37
- 简体中文
38
- </a></li></ul></div></div> <a href="https://github.com/chenxuan0000/vue-seamless-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
39
- GitHub
40
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>指南</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/vue-seamless-scroll/zh/guide/" aria-current="page" class="sidebar-link">安装</a></li><li><a href="/vue-seamless-scroll/zh/guide/usage.html" class="sidebar-link">使用</a></li><li><a href="/vue-seamless-scroll/zh/guide/properties.html" aria-current="page" class="active sidebar-link">组件配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/vue-seamless-scroll/zh/guide/properties.html#data" class="sidebar-link">data</a></li><li class="sidebar-sub-header"><a href="/vue-seamless-scroll/zh/guide/properties.html#classoption" class="sidebar-link">classOption</a></li></ul></li><li><a href="/vue-seamless-scroll/zh/guide/events.html" class="sidebar-link">回调事件</a></li><li><a href="/vue-seamless-scroll/zh/guide/note.html" class="sidebar-link">注意项</a></li><li><a href="/vue-seamless-scroll/zh/guide/issuses.html" class="sidebar-link">常见Issues</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>示例</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/vue-seamless-scroll/zh/guide/01-basic.html" class="sidebar-link">01 - 默认配置</a></li><li><a href="/vue-seamless-scroll/zh/guide/02-direction-bottom.html" class="sidebar-link">02 - 向下滚动</a></li><li><a href="/vue-seamless-scroll/zh/guide/03-direction-right.html" class="sidebar-link">03 - 向右滚动</a></li><li><a href="/vue-seamless-scroll/zh/guide/04-step.html" class="sidebar-link">04 - 滚动速度</a></li><li><a href="/vue-seamless-scroll/zh/guide/05-hoverStop.html" class="sidebar-link">05 - 禁用鼠标悬停停止</a></li><li><a href="/vue-seamless-scroll/zh/guide/06-singleStop.html" class="sidebar-link">06 - 单步停顿</a></li><li><a href="/vue-seamless-scroll/zh/guide/07-singleStopTime.html" class="sidebar-link">07 - 单行停顿时间(singleHeight,waitTime)</a></li><li><a href="/vue-seamless-scroll/zh/guide/08-switch.html" class="sidebar-link">08 - switch控制切换</a></li><li><a href="/vue-seamless-scroll/zh/guide/09-echart.html" class="sidebar-link">09 - echart图表无缝滚动</a></li><li><a href="/vue-seamless-scroll/zh/guide/10-array-property-update.html" class="sidebar-link">10 - 复杂结构数组属性更新问题</a></li><li><a href="/vue-seamless-scroll/zh/guide/11-array-length-update.html" class="sidebar-link">11 - 滚动列表动态追加数据</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="组件配置"><a href="#组件配置" class="header-anchor">#</a> 组件配置</h1> <h2 id="data"><a href="#data" class="header-anchor">#</a> data</h2> <ul><li>type: <code>Array</code></li> <li>required: <code>true</code></li></ul> <p>无缝滚动 list 数据。</p> <p>组件内部只关注 data 数组的 length。</p> <h2 id="classoption"><a href="#classoption" class="header-anchor">#</a> classOption</h2> <h3 id="step"><a href="#step" class="header-anchor">#</a> step</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>1</code></li></ul> <p>数值越大速度滚动越快。</p> <p>step 值不建议太小,不然会有卡顿效果(如果设置了单步滚动,step 需是单步大小的约数,否则无法保证单步滚动结束的位置是否准确。~~~~~,比如单步设置的 30,step 不能为 4)。</p> <h3 id="limitmovenum"><a href="#limitmovenum" class="header-anchor">#</a> limitMoveNum</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>5</code></li></ul> <p>开启无缝滚动的数据量。</p> <h3 id="hoverstop"><a href="#hoverstop" class="header-anchor">#</a> hoverStop</h3> <ul><li>type: <code>Boolean</code></li> <li>required: <code>false</code></li> <li>default:<code>false</code></li></ul> <p>是否启用鼠标 hover 控制。</p> <h3 id="direction"><a href="#direction" class="header-anchor">#</a> direction</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>1</code></li></ul> <p>方向: 0 往下 1 往上 2 向左 3 向右。</p> <h3 id="opentouch"><a href="#opentouch" class="header-anchor">#</a> openTouch</h3> <ul><li>type: <code>Boolean</code></li> <li>required: <code>false</code></li> <li>default:<code>true</code></li></ul> <p>移动端开启 touch 滑动。</p> <h3 id="singleheight"><a href="#singleheight" class="header-anchor">#</a> singleHeight</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>0</code></li></ul> <p>单步运动停止的高度(默认值 0 是无缝不停止的滚动),direction 为 0|1 时生效。</p> <h3 id="singlewidth"><a href="#singlewidth" class="header-anchor">#</a> singleWidth</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>0</code></li></ul> <p>单步运动停止的宽度(默认值 0 是无缝不停止的滚动),direction 为 2|3 时生效。</p> <h3 id="waittime"><a href="#waittime" class="header-anchor">#</a> waitTime</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>1000</code></li></ul> <p>单步停止等待时间(默认值 1000ms)。</p> <h3 id="switchoffset"><a href="#switchoffset" class="header-anchor">#</a> switchOffset</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>30</code></li></ul> <p>左右切换按钮距离左右边界的边距(px)。</p> <h3 id="autoplay"><a href="#autoplay" class="header-anchor">#</a> autoPlay</h3> <ul><li>type: <code>Boolean</code></li> <li>required: <code>false</code></li> <li>default:<code>true</code></li></ul> <p>需要实现手动切换左右滚动的时候,必须设置<code>autoPlay:false</code>(1.1.17 版本开始,只需要设置<code>navigation:false</code>),目前不支持环路。</p> <h3 id="switchsinglestep"><a href="#switchsinglestep" class="header-anchor">#</a> switchSingleStep</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>134</code></li></ul> <p>手动单步切换 step 值(px)。</p> <h3 id="switchdelay"><a href="#switchdelay" class="header-anchor">#</a> switchDelay</h3> <ul><li>type: <code>Number</code></li> <li>required: <code>false</code></li> <li>default:<code>400</code></li></ul> <p>单步切换的动画时间(ms)。</p> <h3 id="switchdisabledclass"><a href="#switchdisabledclass" class="header-anchor">#</a> switchDisabledClass</h3> <ul><li>type: <code>String</code></li> <li>required: <code>false</code></li> <li>default:<code>disabled</code></li></ul> <p>不可以点击状态的 switch 按钮父元素的类名。</p> <h3 id="issingleremunit"><a href="#issingleremunit" class="header-anchor">#</a> isSingleRemUnit</h3> <ul><li>type: <code>Boolean</code></li> <li>required: <code>false</code></li> <li>default:<code>false</code></li></ul> <p>singleHeight and singleWidth 是否开启 rem 度量。</p> <h3 id="navigation"><a href="#navigation" class="header-anchor">#</a> navigation</h3> <ul><li>type: <code>Boolean</code></li> <li>required: <code>false</code></li> <li>default:<code>false</code></li></ul> <p>左右方向的滚动是否显示控制器按钮,true 的时候 autoPlay 自动变为 false。</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
41
-
42
- <a href="/vue-seamless-scroll/zh/guide/usage.html" class="prev">
43
- 使用
44
- </a></span> <span class="next"><a href="/vue-seamless-scroll/zh/guide/events.html">
45
- 回调事件
46
- </a>
47
-
48
- </span></p></div> </main></div><div class="global-ui"></div></div>
49
- <script src="/vue-seamless-scroll/assets/js/app.e6add531.js" defer></script><script src="/vue-seamless-scroll/assets/js/4.9443f729.js" defer></script><script src="/vue-seamless-scroll/assets/js/58.3faf7da5.js" defer></script>
50
- </body>
51
- </html>
Binary file