-
发起流程
-
-
-
- 提交
-
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.desc }}
+
+
+
+
+
{{ item.type }}
+
+
+
-
+
+.item-other {
+ background: #e1fae2;
+ color: #2ad431;
+}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table1.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table1.vue"
new file mode 100644
index 000000000..c4527a882
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table1.vue"
@@ -0,0 +1,418 @@
+
+
+
+ 1、VolTable基于Element Table封装的常用功能。
+
+ 2、功能包括,双击编辑:select、select联动、switch、日期、图片显示与预览、单元格文件下载、input、render动态渲染等组件。
+
+
+ 3、最重要的是,封装后的组件功能包括:自动绑定下拉框数据源、自动从后台加载数据、分页、及table输入验证等常用功能(只需要照着文档配置json即可完成)。
+
+
+ 4、具体使用见:框架文档->组件api->voltable。点击查看文档
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table2.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table2.vue"
new file mode 100644
index 000000000..ef0df3faa
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table2.vue"
@@ -0,0 +1,243 @@
+
+
+
+
+ 1、只需要配置好列信息即可从后台加载(自动求和见代码中的备注说明或table组件api)。
+
+
+ 2、如果需要筛选条件,在loadTableBefore方法中按demo格式提交查询参数即可
+
+
+ 3、具体使用见:框架文档->组件api->voltable。点击查看文档
+
+
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table3.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table3.vue"
new file mode 100644
index 000000000..cd8b01ffd
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/table3.vue"
@@ -0,0 +1,223 @@
+
+
+
+ 1、日期(内容)格式化。
+ 2、单元格点击事件、双击事件。
+ 3、单元格背景颜色、文字换行等...
+
+ 4、具体使用见:框架文档->组件api->voltable。点击查看文档
+
+
+
+
+
+ 获取选中行
+
+ 添加行
+ 清空数据
+
+
+
+
+
+
+
+ 当前点击的行数据 {{currentRow}}
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.js" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.js"
new file mode 100644
index 000000000..1ce53eaa1
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.js"
@@ -0,0 +1,108 @@
+let options = {
+ formFileds1: {//表单配置
+ Variety: "",
+ AgeRange: "",
+ DateRange: [],
+ City: "",
+ AvgPrice: 8.88,
+ Date: "",
+ IsTop: "还没想好..."
+ }
+ , formRules1: [//表单配置
+ [
+ {
+ dataKey: "city",
+ title: "城市",
+ required: true,
+ field: "City",
+ data: [],
+ type: "select"
+ },
+ {
+ title: "多选日期",
+ range: true, //设置为true可以选择开始与结束日期
+ required: false,
+ field: "DateRange",
+ // colSize: 4,//设置宽度为1/3
+ type: "date"
+ }
+ ],
+ [
+ {
+ dataKey: "age", //后台下拉框对应的数据字典编号
+ data: [], //loadKey设置为true,会根据dataKey从后台的下拉框数据源中自动加载数据
+ title: "月龄",
+ required: true, //设置为必选项
+ field: "AgeRange",
+ type: "select"
+ },
+ {
+ title: "日期",
+ required: true,
+ field: "Date",
+ placeholder: "你可以设置colSize属性决定标签的长度,可选值12/8/6/4",
+ // colSize: 8,//设置宽度为2/3
+ type: "datetime"
+ }
+ ],
+ [
+ {
+ title: "品种",
+ dataKey: "age",
+ placeholder: "此处数据源为手动绑定",
+ //如果这里绑定了data数据,后台不会加载此数据源
+ data: [{ key: "1", value: "1" }, { key: "2", value: "2" }],
+ required: false,
+ field: "Variety",
+ type: "select"
+ },
+ {
+ type: "decimal",
+ title: "价格",
+ required: true,
+ placeholder: "你可以自己定义placeholder显示的文字",
+ field: "AvgPrice"
+ }
+ ],
+ [
+ {
+ title: "备注",
+ required: true,
+ field: "IsTop",
+ colSize: 12, //设置12,此列占100%宽度
+ type: "textarea"
+ }
+ ]
+ ],
+ table: { //table表单配置
+ data: [{ ExpertName: "移动手机", AuditStatus: 0, CreateDate: "2019-11-01", UserTrueName: "沈万三" },
+ { ExpertName: "电子产品", AuditStatus: 1, CreateDate: "2019-11-02", UserTrueName: "鲁班" },
+ { ExpertName: "生活用品", AuditStatus: 2, CreateDate: "2019-11-03", UserTrueName: "二货" },
+ { ExpertName: "家具办公", AuditStatus: 0, CreateDate: "2019-11-04", UserTrueName: "二手" }],
+ columns: [{
+ field: "ExpertName",
+ title: "商品名称"
+ },
+ {
+ field: "AuditStatus",
+ title: "审核状态",
+ bind: {
+ key: "audit",
+ data: [
+ { key: "0", value: "审核中" },
+ { key: "1", value: "审核通过" },
+ { key: "2", value: "审核未通过" }
+ ]
+ }
+ }, {
+ field: "UserTrueName",
+ title: "申请人",
+ width: 120
+ }, {
+ field: "CreateDate",
+ title: "申请时间",
+ type: "datetime"
+ }]
+ }
+}
+export default options;
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.vue"
new file mode 100644
index 000000000..fc77df1fb
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableForms.vue"
@@ -0,0 +1,91 @@
+
+
+
+
+
+ 使用完整操作的table
+ 如果需要使用带增删改查导入导出的完整组件,可参照代码生成的vue页面进行配置或使用ViewGird.vue组件,使用ViewGird.vue组件配置完整操作参照下面【table基础配置】
+
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableFormsViewGrid.js" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableFormsViewGrid.js"
new file mode 100644
index 000000000..8f18bcdfc
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tableFormsViewGrid.js"
@@ -0,0 +1,64 @@
+var viewGridOptions = { //此处的权限是使用的当前页面的权限,而不是App_Transaction表的权限
+ table: {
+ key: 'Id',
+ footer: "Foots",
+ cnName: 'table基础配置',
+ name: 'App_Transaction',
+ url: "/App_Transaction/",
+ sortName: "Id"
+ },
+ extend: {
+ text:"此组件配置与代码生成器生成的配置相同,自带基础操作,可任意扩展",
+ buttons: { //扩展按钮
+ view: [//ViewGrid查询界面按钮
+ {
+ name: "扩展按钮!",
+ icon: 'md-create',
+ value: 'Edit',
+ class: '',
+ type: 'error',
+ index: 1,//显示的位置
+ onClick: function () { //扩展按钮执行事件
+ this.$Message.error("扩展按钮")
+ }
+ }]
+ },
+ methods: {//事件扩展
+ onInit(){
+ this.tableMaxHeight=500;
+ },
+ searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
+ console.log({ title: this.table.cnName + ',查询结果', desc: '返回的对象:' + JSON.stringify(result) });
+ return true;
+ }
+ }
+ },
+ editFormFields: {"Name":"","TransactionType":"","CowType":"",PhoneNo:"",Describe:""},
+ editFormOptions: [[{"title":"姓名","required":true,"field":"Name"}],
+ [{"dataKey":"cq","title":"是否买入","field":"TransactionType","type":"select"}],
+ [{"dataKey":"nav","title":"购买类型","field":"CowType","type":"select"}],
+ [{"type":"phone","title":"电话","field":"PhoneNo","required":true}],
+ [{"type":"textarea","title":"描述","field":"Describe","required":true}]],
+ searchFormFields: {"CowType":"","Creator":"","CreateDate":""},
+ searchFormOptions: [[{"dataKey":"nav","title":"购买类型","field":"CowType","type":"dropList"},{"title":"提交人","field":"Creator"},{"title":"提交时间","field":"CreateDate","type":"datetime"}]],
+ columns: [{field:'Id',title:'主键ID',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
+ {field:'Name',title:'姓名',type:'string',width:120,require:true,align:'left',sortable:true},
+ {field:'PhoneNo',title:'电话',type:'string',link:true,width:150,require:true,align:'left'},
+ {field:'Quantity',title:'数量',type:'int',width:90,require:true,align:'left'},
+ {field:'TransactionType',title:'是否买入',type:'int',bind:{ key:'cq',data:[]},width:120,align:'left'},
+ {field:'CowType',title:'购买类型',type:'string',bind:{ key:'nav',data:[]},width:90,align:'left'},
+ {field:'Describe',title:'描述',type:'string',width:190,require:true,align:'left'},
+ {field:'Enable',title:'是否启用',type:'byte',width:90,hidden:true,align:'left'},
+ {field:'CreateID',title:'创建人Id',type:'int',width:90,hidden:true,align:'left'},
+ {field:'Creator',title:'提交人',type:'string',width:130,align:'left'},
+ {field:'CreateDate',title:'提交时间',type:'datetime',width:150,align:'left',sortable:true},
+ {field:'Modifier',title:'修改人',type:'string',width:130,hidden:true,align:'left'},
+ {field:'ModifyDate',title:'修改时间',type:'datetime',width:150,hidden:true,align:'left',sortable:true}],
+ detail: {
+ cnName:"",
+ columns: [],
+ sortName: "",
+ key:""
+ }
+};
+export default viewGridOptions;
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tabsTable.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tabsTable.vue"
new file mode 100644
index 000000000..d3d11d2ba
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/tables/tabsTable.vue"
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+ {{ btn.name }}
+
+ 关于多页签:可以将生成的页面或自定义页面引用到此处,具体使用见:tabsTable.vue
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable1.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable1.vue"
new file mode 100644
index 000000000..73444f4b2
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable1.vue"
@@ -0,0 +1,42 @@
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable2.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable2.vue"
new file mode 100644
index 000000000..4a15fed63
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable2.vue"
@@ -0,0 +1,43 @@
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable3.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable3.vue"
new file mode 100644
index 000000000..8b34241ca
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/TreeTable3.vue"
@@ -0,0 +1,144 @@
+
+
+
+ treetable
+
+ 页面为手动引用的voltable的组件,具体使用见:TreeTable3.vue
+
+
+
+
+
+
+
+ 查询
+ 获取选中的行
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Table.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Table.vue"
new file mode 100644
index 000000000..25ea20a0c
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Table.vue"
@@ -0,0 +1,76 @@
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue"
new file mode 100644
index 000000000..7c181864d
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue"
@@ -0,0 +1,139 @@
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/table.js" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/table.js"
new file mode 100644
index 000000000..e20ef0af6
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/table.js"
@@ -0,0 +1,88 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: '',
+ gridBody: {
+ render () {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': true, type: 'success',
+ closable: false, title: '关于TreeTable使用'
+ }, '整个页面分为:左边树形菜单Tree.vue与右边Table.vue(代码生成的页面,复制过来即可)两部份,按照此格式配置即可,具体说明见TreeTable1.vue'),
+ ]
+ }
+ },
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ text: "点击左边tree加载表格数据",
+ buttons: [],//扩展的按钮
+ methods: {//事件扩展
+ onInit() {
+ //缓存当前table页面,点击左边树形菜单时,直接刷新此页面
+ this.$store.getters.data().viewGridDemo = this;
+ this.boxOptions.height = 400;
+ //默认不加载表格数据,由Tree.vue中created方法来触发默认加载数据
+ this.load=false;
+ },
+ onInited() {
+ this.height = this.height - 75;
+ },
+ nodeClick(treeId){ //点击边树节点刷新右边表格
+ this.refresh();
+ },
+ searchBefore(param) {
+ //点击左边tree时加载table数据,其他情况都不加载数据
+ let treeId = this.$store.getters.data().treeDemo1.treeId;
+ if (treeId === undefined) {
+ return false;
+ }
+ //将查询的treeid(角色id)提交到后台
+ param.value = treeId;
+ //生成查询条件
+ // param.wheres = [{ name: 'Role_Id', value: treeId }]
+ return true;
+ },
+ addBefore(param) { //保存前
+ let treeId = this.$store.getters.data().treeDemo1.treeId;
+ if (treeId === undefined) {
+ this.$Message.error("请选择左侧角色")
+ return false;
+ }
+ //添加默认新建的值到后台
+ //新建用户的角色默认为当前树形菜单选中的角色
+ param.mainData.Role_Id = treeId;
+ param.mainData.IsRegregisterPhone = 0;
+ return true;
+ },
+ addAfter(result) {//用户新建后,显示随机生成的密码
+ if (!result.status) {
+ return true;
+ }
+ return true;
+ },
+ modelOpenAfter() {
+ //点击弹出框后,如果是编辑状态,禁止编辑用户名,如果新建状态,将用户名字段设置为可编辑
+ let isEDIT = this.currentAction == this.const.EDIT;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ if (x.field == "UserName") {
+ x.disabled=isEDIT
+ }
+ })
+ //不是新建,性别默认值设置为男
+ if (!isEDIT) {
+ this.editFormFields.Gender = "0";
+ }
+ })
+ }
+
+ }
+};
+export default extension;
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Table2.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Table2.vue"
new file mode 100644
index 000000000..2a91a8af0
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Table2.vue"
@@ -0,0 +1,149 @@
+
+
+
+
+
+ 清空表
+ 删除行
+ 添加行
+ 获取选中的行
+
+
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue"
new file mode 100644
index 000000000..28bac306b
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue"
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/tree_options.js" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/tree_options.js"
new file mode 100644
index 000000000..f5157bf9f
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/tree_options.js"
@@ -0,0 +1,77 @@
+let
+ options = {
+ tree: [
+ { "id": 1, "parentId": 0, "text": "北京市" },
+ { "id": 2, "parentId": 1, "text": "西城区" },
+ { "id": 3, "parentId": 1, "text": "东城区" },
+ { "id": 5, "parentId": 0, "text": "西藏自治区" },
+ { "id": 6, "parentId": 5, "text": "拉萨市" },
+ { "id": 7, "parentId": 5, "text": "昌都市" },
+ { "id": 8, "parentId": 7, "text": "丁青县" }
+ ],
+ //table数据
+ tableData: [
+ {
+ code: "001",
+ id: 1,//tree的id数据
+ address: '海淀区',
+ remark: '北京市-海淀区',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ }, {
+ code: "001",
+ id: 1,//tree的id数据
+ address: '朝阳区',
+ remark: '北京市-朝阳区',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ },{
+ code: "001",
+ id: 2,//tree的id数据
+ address: '恭王府 ',
+ remark: '世界最大的四合院除皇帝和家眷外,任何人是不得住进紫禁城的',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ },
+ {
+ code: "002",
+ id: 3,//tree的id数据
+ address: '白塔寺 ',
+ remark: '妙应寺白塔位于阜城门内大街路北的妙应寺内。因寺内有通体涂以白垩的塔,故俗称“白塔寺”',
+ enable: 0,
+ createDate: '2020-04-01 20:00'
+ }, {
+ code: "004",
+ id: 6,//tree的id数据
+ address: '布达拉宫',
+ remark: '布达拉宫不仅是西藏的象征,更是朝圣者心中的圣地',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ },
+ {
+ code: "005",
+ id: 5,//tree的id数据
+ address: '大昭寺',
+ remark: '在藏民心中大昭寺在拉萨的中心地位',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ },
+ {
+ code: "007",
+ id: 7,
+ address: '测试 ',
+ remark: '测试测试',
+ enable: 1,
+ createDate: '2020-04-01 20:00'
+ },
+ {
+ code: "008",
+ id: 5,
+ address: '日客则 ',
+ remark: '位于定日县境内的珠穆朗玛峰是世界第一高峰。峰顶常年积雪',
+ enable: 0,
+ createDate: '2020-04-01 20:00'
+ }]
+ }
+
+export default options;
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/formUpload.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/formUpload.vue"
new file mode 100644
index 000000000..2647ef135
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/formUpload.vue"
@@ -0,0 +1,235 @@
+
+
+
+
表单与文件上传下载(可自定义上传、图片预览与点击下载文件)
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/volUploadExample.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/volUploadExample.vue"
new file mode 100644
index 000000000..a4214dae1
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/upload/volUploadExample.vue"
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+ 多文件手动上传,最多2个excel文件
+
+
+
+
+
+
+
+
+
+
+
From f813077afb77d77301ed6b84d333161eeee8efbc Mon Sep 17 00:00:00 2001
From: 3ddbz
Date: Thu, 17 Jul 2025 01:14:03 +0800
Subject: [PATCH 07/12] =?UTF-8?q?refactor(Vol.Vue3.Vite):=20=E6=9B=BF?=
=?UTF-8?q?=E6=8D=A2=20::v-deep=20=E9=80=89=E6=8B=A9=E5=99=A8=E4=B8=BA=20:?=
=?UTF-8?q?deep=20=E9=80=89=E6=8B=A9=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在多个组件中将 ::v-deep 选择器替换为 :deep 选择器
- 不会影响功能,仅修改样式选择器
---
.../src/components/basic/QuickSearch.vue" | 12 ++---
.../components/basic/ViewGrid/ViewGrid.less" | 2 +-
.../components/basic/ViewGrid/ViewGrid.vue" | 8 +--
.../src/components/basic/VolBox.vue" | 16 +++---
.../components/basic/VolElementMenuChild.vue" | 2 +-
.../src/components/basic/VolForm.vue" | 50 ++++++++++++-------
.../VolFormDraggable/VolFormDraggable.vue" | 20 ++++----
.../src/components/basic/VolTable.vue" | 40 +++++++--------
.../src/components/workflow/panel.vue" | 4 +-
.../Vol.Vue3.Vite/src/views/Index.vue" | 4 +-
.../Vol.Vue3.Vite/src/views/charts/chart.vue" | 4 +-
.../Vol.Vue3.Vite/src/views/forms/form4.vue" | 6 +--
.../src/views/system/Permission.vue" | 10 ++--
.../src/views/system/Sys_Menu.vue" | 4 +-
.../src/views/treeTable/demo1/Tree.vue" | 4 +-
.../src/views/treeTable/demo2/Tree2.vue" | 4 +-
16 files changed, 103 insertions(+), 87 deletions(-)
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/QuickSearch.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/QuickSearch.vue"
index 2ef4ab8a7..42963c4da 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/QuickSearch.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/QuickSearch.vue"
@@ -89,13 +89,13 @@ export default {
};
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolBox.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolBox.vue"
index 89e325fe8..27b60a974 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolBox.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolBox.vue"
@@ -154,20 +154,20 @@ export default defineComponent({
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenuChild.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenuChild.vue"
index ccea3218d..0574b1824 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenuChild.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenuChild.vue"
@@ -46,7 +46,7 @@ export default {
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/charts/chart.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/charts/chart.vue"
index 24aeebd47..5c03a23f8 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/charts/chart.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/charts/chart.vue"
@@ -128,11 +128,11 @@ function tabClick(name) {
}
}
-.m-charts ::v-deep(.el-tabs__content) {
+.m-charts :deep(.el-tabs__content) {
height: calc(100% - 45px);
}
-.m-charts ::v-deep(.el-tab-pane) {
+.m-charts :deep(.el-tab-pane) {
height: 100%;
}
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/forms/form4.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/forms/form4.vue"
index d6cb7ddeb..0fc102e0e 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/forms/form4.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/forms/form4.vue"
@@ -116,13 +116,13 @@ export default {
margin-bottom: 15px;
background: white;
}
-.t-dis ::v-deep(.example-tb .el-alert) {
+.t-dis :deep(.example-tb .el-alert) {
display: none;
}
-.t-dis ::v-deep(.example-tb .tb) {
+.t-dis :deep(.example-tb .tb) {
margin-top: 0 !important;
}
-.t-dis ::v-deep(.example-tb .search-info) {
+.t-dis :deep(.example-tb .search-info) {
margin-left: -19px;
}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Permission.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Permission.vue"
index 1899e2dd9..d8637d2e4 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Permission.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Permission.vue"
@@ -352,7 +352,7 @@ export default defineComponent({
}
}
-.role-tree-left ::v-deep(.el-tree-node__content) {
+.role-tree-left :deep(.el-tree-node__content) {
cursor: pointer;
height: auto;
padding: 5px;
@@ -360,22 +360,22 @@ export default defineComponent({
font-size: 15px;
}
-.role-tree-left ::v-deep(.el-tree-node__content:hover) {
+.role-tree-left :deep(.el-tree-node__content:hover) {
background: #f4f4f4;
border-radius: 20px;
}
-.role-tree-left ::v-deep(.is-current > .el-tree-node__content:first-child) {
+.role-tree-left :deep(.is-current > .el-tree-node__content:first-child) {
background: #f2f2f2;
border-radius: 20px;
}
-.role-tree-right ::v-deep(.el-tree-node__content) {
+.role-tree-right :deep(.el-tree-node__content) {
margin-bottom: 5px;
height: auto;
}
-.role-tree-right ::v-deep(.el-checkbox__label) {
+.role-tree-right :deep(.el-checkbox__label) {
position: relative;
top: 2px;
}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Sys_Menu.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Sys_Menu.vue"
index be5878522..cb917a34c 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Sys_Menu.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/system/Sys_Menu.vue"
@@ -600,7 +600,7 @@ export default defineComponent({
.form-content {
margin-top: 30px;
}
-.menu-left ::v-deep(.el-scrollbar__bar.is-vertical) {
+.menu-left :deep(.el-scrollbar__bar.is-vertical) {
width: 2px;
}
.auth-group {
@@ -623,7 +623,7 @@ export default defineComponent({
padding-bottom: 10px;
}
}
-.auth-group ::v-deep(.el-checkbox__label) {
+.auth-group :deep(.el-checkbox__label) {
padding-left: 4px;
}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue"
index 7c181864d..d553fc4bb 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo1/Tree.vue"
@@ -130,10 +130,10 @@ export default {
padding-right: 5px;
}
}
-.com-el-tree ::v-deep(.el-tree-node) {
+.com-el-tree :deep(.el-tree-node) {
padding: 3px 0;
}
-.com-el-tree ::v-deep(.el-scrollbar .el-scrollbar__thumb) {
+.com-el-tree :deep(.el-scrollbar .el-scrollbar__thumb) {
width: 0 !important;
}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue"
index 28bac306b..cc0b0639f 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/views/treeTable/demo2/Tree2.vue"
@@ -131,10 +131,10 @@ export default {
padding-right: 5px;
}
}
-.com-el-tree ::v-deep(.el-tree-node) {
+.com-el-tree :deep(.el-tree-node) {
padding: 3px 0;
}
-.com-el-tree ::v-deep(.el-scrollbar .el-scrollbar__thumb) {
+.com-el-tree :deep(.el-scrollbar .el-scrollbar__thumb) {
width: 0 !important;
}
From e8ebb8e4939b9ed3cf7ea6441b2b365dd3082341 Mon Sep 17 00:00:00 2001
From: 3ddbz
Date: Thu, 17 Jul 2025 01:14:56 +0800
Subject: [PATCH 08/12] =?UTF-8?q?feat(vite):=20=E4=BD=BF=E7=94=A8=E7=8E=AF?=
=?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=E9=85=8D=E7=BD=AE=20API=20URL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 .env 和 .env.production 文件,分别配置开发和生产环境的 API URL
- 修改 http.js 文件,使用环境变量替代硬编码的 API URL
- 更新 vite.config.ts 文件,引入环境变量配置
---
.../Vol.Vue3.Vite/.env" | 2 +
.../Vol.Vue3.Vite/.env.production" | 1 +
.../Vol.Vue3.Vite/src/api/http.js" | 11 +-
.../Vol.Vue3.Vite/vite.config.ts" | 135 ++++++++++--------
4 files changed, 76 insertions(+), 73 deletions(-)
create mode 100644 "v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env"
create mode 100644 "v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env.production"
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env"
new file mode 100644
index 000000000..04c48d65d
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env"
@@ -0,0 +1,2 @@
+VITE_APP_TITLE=Vol开发框架Vue3版本
+VITE_API_URL=http://127.0.0.1:9991/
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env.production" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env.production"
new file mode 100644
index 000000000..9b7b1bedb
--- /dev/null
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/.env.production"
@@ -0,0 +1 @@
+VITE_API_URL=http://api.volcore.xyz/
\ No newline at end of file
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/api/http.js" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/api/http.js"
index 95fd723a1..5285bdadc 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/api/http.js"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/api/http.js"
@@ -11,16 +11,7 @@ import { ElLoading as Loading, ElMessage as Message } from 'element-plus';
let loadingInstance;
let loadingStatus = false;
-if (process.env.NODE_ENV == 'development') {
- axios.defaults.baseURL = 'http://127.0.0.1:9991/';
-}
-else if (process.env.NODE_ENV == 'debug') {
- axios.defaults.baseURL = 'http://127.0.0.1:9991/';
-}
-
-else if (process.env.NODE_ENV == 'production') {
- axios.defaults.baseURL = 'http://api.volcore.xyz/';
-}
+axios.defaults.baseURL = __API_URL__;
if (!axios.defaults.baseURL.endsWith('/')) {
axios.defaults.baseURL+="/";
}
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/vite.config.ts" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/vite.config.ts"
index 5444ea67e..d5109ff2b 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/vite.config.ts"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/vite.config.ts"
@@ -1,75 +1,84 @@
import { fileURLToPath } from 'node:url'
-import { defineConfig } from 'vite'
+import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { visualizer } from 'rollup-plugin-visualizer'
// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- vue(),
- vueJsx(),
- visualizer({
- filename: 'report_form_rollup-plugin-visualizer.html'
- })
- //引用后提示:
- // requireTransform({
- // fileRegex: /.js$|.ts$/
- // })
- ],
- define: {},
- optimizeDeps: {
- exclude: ['vue']
- },
- build: {
- commonjsOptions: {
- transformMixedEsModules: true
+export default defineConfig(({ mode }) => {
+ const envConfig = loadEnv(mode, process.cwd())
+
+ console.log('envConfig', envConfig)
+
+ return {
+ plugins: [
+ vue(),
+ vueJsx(),
+ visualizer({
+ filename: 'report_form_rollup-plugin-visualizer.html'
+ })
+ //引用后提示:
+ // requireTransform({
+ // fileRegex: /.js$|.ts$/
+ // })
+ ],
+ define: {
+ __APP_TITLE__: JSON.stringify(envConfig.VITE_APP_TITLE),
+ __API_URL__: JSON.stringify(envConfig.VITE_API_URL)
},
- rollupOptions: {
- output: {
- //每个node_modules模块分成一个js文件
- manualChunks(id) {
- if (id.includes('node_modules')) {
- return id.toString().split('node_modules/')[1].split('/')[0].toString()
- }
- },
- // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
- // entryFileNames: 'assets/js/[name].[hash].js', // 用于命名代码拆分时创建的共享块的输出命名
- // chunkFileNames: 'assets/js/[name].[hash].js', // 用于输出静态资源的命名,[ext]表示文件扩展名
- // assetFileNames: 'assets/[ext]/[name].[hash].[ext]'
- entryFileNames: 'assets/js/[hash].js', // 用于命名代码拆分时创建的共享块的输出命名
- chunkFileNames: 'assets/js/[hash].js', // 用于输出静态资源的命名,[ext]表示文件扩展名
- assetFileNames: 'assets/[ext]/[hash].[ext]'
- }
+ optimizeDeps: {
+ exclude: ['vue']
+ },
+ build: {
+ commonjsOptions: {
+ transformMixedEsModules: true
+ },
+ rollupOptions: {
+ output: {
+ //每个node_modules模块分成一个js文件
+ manualChunks(id) {
+ if (id.includes('node_modules')) {
+ return id.toString().split('node_modules/')[1].split('/')[0].toString()
+ }
+ },
+ // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
+ // entryFileNames: 'assets/js/[name].[hash].js', // 用于命名代码拆分时创建的共享块的输出命名
+ // chunkFileNames: 'assets/js/[name].[hash].js', // 用于输出静态资源的命名,[ext]表示文件扩展名
+ // assetFileNames: 'assets/[ext]/[name].[hash].[ext]'
+ entryFileNames: 'assets/js/[hash].js', // 用于命名代码拆分时创建的共享块的输出命名
+ chunkFileNames: 'assets/js/[hash].js', // 用于输出静态资源的命名,[ext]表示文件扩展名
+ assetFileNames: 'assets/[ext]/[hash].[ext]'
+ }
+ },
+ // outDir: 'dist', // 输出目录,默认为 'dist'
+ // rollupOptions: {
+ // input: {
+ // main: 'src/main.js', // 你的入口文件
+ // }
+ // },
+ sourcemap: false //生成源映射文件
},
- // outDir: 'dist', // 输出目录,默认为 'dist'
- // rollupOptions: {
- // input: {
- // main: 'src/main.js', // 你的入口文件
- // }
- // },
- sourcemap: false //生成源映射文件
- },
- publicDir: 'public', // 这里指定了 public 文件夹的位置
- css: {
- //查看CSS属于哪个css文件
- devSourcemap: false
- },
- server: {
- port: 9990
- // proxy: {
- // '/api': {
- // target: 'http://xxxx.com',
- // changeOrigin: true,
- // rewrite: (path) => path.replace(/^\/api/, '')
- // }
- // }
- },
- resolve: {
- extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'],
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
+ publicDir: 'public', // 这里指定了 public 文件夹的位置
+ css: {
+ //查看CSS属于哪个css文件
+ devSourcemap: false
+ },
+ server: {
+ port: 9990
+ // proxy: {
+ // '/api': {
+ // target: 'http://xxxx.com',
+ // changeOrigin: true,
+ // rewrite: (path) => path.replace(/^\/api/, '')
+ // }
+ // }
+ },
+ resolve: {
+ extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'],
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
}
}
})
From f6aa62e7758292ccf37fed2546aa3f72d5248b90 Mon Sep 17 00:00:00 2001
From: 3ddbz
Date: Thu, 17 Jul 2025 01:17:41 +0800
Subject: [PATCH 09/12] =?UTF-8?q?refactor(components):=20=E9=87=8D?=
=?UTF-8?q?=E6=9E=84=20VolElementMenu=20=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 优化模板结构,提高代码可读性和维护性
- 使用 ElScrollbar 组件包裹菜单,解决菜单滚动问题
- 重构 VolElementMenuChild 组件,使用 computed 属性动态决定组件类型
---
.../src/components/basic/VolElementMenu.vue" | 80 +++++++------------
.../components/basic/VolElementMenuChild.vue" | 79 +++++++++---------
2 files changed, 65 insertions(+), 94 deletions(-)
diff --git "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenu.vue" "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenu.vue"
index cc544d19e..68598af8f 100644
--- "a/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenu.vue"
+++ "b/v3\347\211\210\346\234\254\344\273\243\347\240\201/Vol.Vue3.Vite/src/components/basic/VolElementMenu.vue"
@@ -1,51 +1,33 @@
-