mirror of
https://gitee.com/log4j/pig-ui.git
synced 2024-12-22 21:22:33 +08:00
♻️ Refactoring code. 组件重新命名
This commit is contained in:
parent
f3c0db99aa
commit
4dadffa872
24
package-lock.json
generated
24
package-lock.json
generated
@ -16,6 +16,7 @@
|
|||||||
"@wangeditor/editor-for-vue": "5.1.12",
|
"@wangeditor/editor-for-vue": "5.1.12",
|
||||||
"axios": "^1.3.3",
|
"axios": "^1.3.3",
|
||||||
"crypto-js": "^3.1.9-1",
|
"crypto-js": "^3.1.9-1",
|
||||||
|
"driver.js": "^0.9.8",
|
||||||
"echarts": "^5.4.1",
|
"echarts": "^5.4.1",
|
||||||
"element-plus": "2.3.1",
|
"element-plus": "2.3.1",
|
||||||
"form-designer": "^0.0.2",
|
"form-designer": "^0.0.2",
|
||||||
@ -24,7 +25,6 @@
|
|||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.0.32",
|
"pinia": "^2.0.32",
|
||||||
"print-js": "^1.6.0",
|
|
||||||
"qrcode": "1.5.1",
|
"qrcode": "1.5.1",
|
||||||
"qs": "^6.11.0",
|
"qs": "^6.11.0",
|
||||||
"screenfull": "^6.0.2",
|
"screenfull": "^6.0.2",
|
||||||
@ -1726,6 +1726,12 @@
|
|||||||
"tslib": "^2.0.3"
|
"tslib": "^2.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/driver.js": {
|
||||||
|
"version": "0.9.8",
|
||||||
|
"resolved": "https://registry.npmmirror.com/driver.js/-/driver.js-0.9.8.tgz",
|
||||||
|
"integrity": "sha512-bczjyKdX6XmFyCDkwtRmlaORDwfBk1xXmRO0CAe5VwNQTM98aWaG2LAIiIdTe53iV/B7W5lXlIy2xYtf0JRb7Q==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/echarts": {
|
"node_modules/echarts": {
|
||||||
"version": "5.4.1",
|
"version": "5.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
|
||||||
@ -3333,12 +3339,6 @@
|
|||||||
"node": ">=10.13.0"
|
"node": ">=10.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/print-js": {
|
|
||||||
"version": "1.6.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz",
|
|
||||||
"integrity": "sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/prismjs": {
|
"node_modules/prismjs": {
|
||||||
"version": "1.29.0",
|
"version": "1.29.0",
|
||||||
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
||||||
@ -5720,6 +5720,11 @@
|
|||||||
"tslib": "^2.0.3"
|
"tslib": "^2.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"driver.js": {
|
||||||
|
"version": "0.9.8",
|
||||||
|
"resolved": "https://registry.npmmirror.com/driver.js/-/driver.js-0.9.8.tgz",
|
||||||
|
"integrity": "sha512-bczjyKdX6XmFyCDkwtRmlaORDwfBk1xXmRO0CAe5VwNQTM98aWaG2LAIiIdTe53iV/B7W5lXlIy2xYtf0JRb7Q=="
|
||||||
|
},
|
||||||
"echarts": {
|
"echarts": {
|
||||||
"version": "5.4.1",
|
"version": "5.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
|
||||||
@ -6935,11 +6940,6 @@
|
|||||||
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
|
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"print-js": {
|
|
||||||
"version": "1.6.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz",
|
|
||||||
"integrity": "sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg=="
|
|
||||||
},
|
|
||||||
"prismjs": {
|
"prismjs": {
|
||||||
"version": "1.29.0",
|
"version": "1.29.0",
|
||||||
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import request from '/@/utils/request';
|
import request from '/@/utils/request';
|
||||||
|
|
||||||
export const depttree = (params?: Object) => {
|
export const deptTree = (params?: Object) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/admin/dept/tree',
|
url: '/admin/dept/tree',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
@ -100,7 +100,7 @@ const props = defineProps({
|
|||||||
const emit = defineEmits(['update:modelValue', 'get', 'clear']);
|
const emit = defineEmits(['update:modelValue', 'get', 'clear']);
|
||||||
|
|
||||||
// 引入组件
|
// 引入组件
|
||||||
const IconList = defineAsyncComponent(() => import('/@/components/iconSelector/list.vue'));
|
const IconList = defineAsyncComponent(() => import('/@/components/IconSelector/list.vue'));
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const inputWidthRef = ref();
|
const inputWidthRef = ref();
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<el-input v-model="searchName" suffix-icon="search" :placeholder="placeholder" clearable style="margin-bottom: 20px" @change="getDeptTree" />
|
<el-input v-model="searchName" suffix-icon="search" :placeholder="placeholder" clearable style="margin-bottom: 20px" @change="getdeptTree" />
|
||||||
<el-dropdown :hide-on-click="false" class="mt10 mr10">
|
<el-dropdown :hide-on-click="false" class="mt10 mr10">
|
||||||
<el-icon style="transform: rotate(90deg)">
|
<el-icon style="transform: rotate(90deg)">
|
||||||
<MoreFilled />
|
<MoreFilled />
|
||||||
@ -116,7 +116,7 @@ const handleNodeClick = (item: any) => {
|
|||||||
/**
|
/**
|
||||||
* 获取部门树形结构数据。
|
* 获取部门树形结构数据。
|
||||||
*/
|
*/
|
||||||
const getDeptTree = () => {
|
const getdeptTree = () => {
|
||||||
if (props.query instanceof Function) {
|
if (props.query instanceof Function) {
|
||||||
state.localLoading = true;
|
state.localLoading = true;
|
||||||
|
|
||||||
@ -150,11 +150,11 @@ const toggleRowExpansionAll = (status) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getDeptTree();
|
getdeptTree();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 方便父组件调用刷新树方法
|
// 方便父组件调用刷新树方法
|
||||||
defineExpose({
|
defineExpose({
|
||||||
getDeptTree,
|
getdeptTree,
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -65,8 +65,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="text-align: center">
|
<el-row style="text-align: center">
|
||||||
<el-col :span="12" class="col-select">
|
<el-col :span="12" class="col-select">
|
||||||
<a v-if="objData.repUrl" target="_blank" :href="objData.repUrl">
|
<a v-if="objData.repUrl" target="_blank" :href="objData.repUrl"> <SvgIcon name="local-wx-video" :size="45" /> </a
|
||||||
<SvgIcon name="local-wx-video" :size="45" /> </a
|
|
||||||
></el-col>
|
></el-col>
|
||||||
<el-col :span="12" class="col-add">
|
<el-col :span="12" class="col-add">
|
||||||
<el-button type="success" @click="openMaterial({ type: 'video', accountId: props.objData.appId })">素材库选择 </el-button>
|
<el-button type="success" @click="openMaterial({ type: 'video', accountId: props.objData.appId })">素材库选择 </el-button>
|
||||||
@ -102,11 +101,11 @@
|
|||||||
<script setup lang="ts" name="wx-reply">
|
<script setup lang="ts" name="wx-reply">
|
||||||
import { getMaterialVideo } from '/@/api/mp/wx-material';
|
import { getMaterialVideo } from '/@/api/mp/wx-material';
|
||||||
import { useMessage } from '/@/hooks/message';
|
import { useMessage } from '/@/hooks/message';
|
||||||
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/wechart/wx-material-select/main.vue'));
|
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/Wechat/wx-material-select/main.vue'));
|
||||||
|
|
||||||
const WxFileUpload = defineAsyncComponent(() => import('/@/components/wechart/fileUpload/index.vue'));
|
const WxFileUpload = defineAsyncComponent(() => import('/@/components/Wechat/fileUpload/index.vue'));
|
||||||
|
|
||||||
const WxNews = defineAsyncComponent(() => import('/@/components/wechart/wx-news/index.vue'));
|
const WxNews = defineAsyncComponent(() => import('/@/components/Wechat/wx-news/index.vue'));
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
objData: {
|
objData: {
|
@ -1,143 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog title="更换头像" v-model="state.isShowDialog" width="769px">
|
|
||||||
<div class="cropper-warp">
|
|
||||||
<div class="cropper-warp-left">
|
|
||||||
<img :src="state.cropperImg" class="cropper-warp-left-img" />
|
|
||||||
</div>
|
|
||||||
<div class="cropper-warp-right">
|
|
||||||
<div class="cropper-warp-right-title">预览</div>
|
|
||||||
<div class="cropper-warp-right-item">
|
|
||||||
<div class="cropper-warp-right-value">
|
|
||||||
<img :src="state.cropperImgBase64" class="cropper-warp-right-value-img" />
|
|
||||||
</div>
|
|
||||||
<div class="cropper-warp-right-label">100 x 100</div>
|
|
||||||
</div>
|
|
||||||
<div class="cropper-warp-right-item">
|
|
||||||
<div class="cropper-warp-right-value">
|
|
||||||
<img :src="state.cropperImgBase64" class="cropper-warp-right-value-img cropper-size" />
|
|
||||||
</div>
|
|
||||||
<div class="cropper-warp-right-label">50 x 50</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
|
||||||
<span class="dialog-footer">
|
|
||||||
<el-button @click="onCancel">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="onSubmit">更 换</el-button>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts" name="cropper">
|
|
||||||
import { reactive, nextTick } from 'vue';
|
|
||||||
import Cropper from 'cropperjs';
|
|
||||||
import 'cropperjs/dist/cropper.css';
|
|
||||||
|
|
||||||
// 定义变量内容
|
|
||||||
const state = reactive({
|
|
||||||
isShowDialog: false,
|
|
||||||
cropperImg: '',
|
|
||||||
cropperImgBase64: '',
|
|
||||||
cropper: '' as RefType,
|
|
||||||
});
|
|
||||||
|
|
||||||
// 打开弹窗
|
|
||||||
const openDialog = (imgs: string) => {
|
|
||||||
state.cropperImg = imgs;
|
|
||||||
state.isShowDialog = true;
|
|
||||||
nextTick(() => {
|
|
||||||
initCropper();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
// 关闭弹窗
|
|
||||||
const closeDialog = () => {
|
|
||||||
state.isShowDialog = false;
|
|
||||||
};
|
|
||||||
// 取消
|
|
||||||
const onCancel = () => {
|
|
||||||
closeDialog();
|
|
||||||
};
|
|
||||||
// 更换
|
|
||||||
const onSubmit = () => {
|
|
||||||
// state.cropperImgBase64 = state.cropper.getCroppedCanvas().toDataURL('image/jpeg');
|
|
||||||
};
|
|
||||||
// 初始化cropperjs图片裁剪
|
|
||||||
const initCropper = () => {
|
|
||||||
const letImg = <HTMLImageElement>document.querySelector('.cropper-warp-left-img');
|
|
||||||
state.cropper = new Cropper(letImg, {
|
|
||||||
viewMode: 1,
|
|
||||||
dragMode: 'none',
|
|
||||||
initialAspectRatio: 1,
|
|
||||||
aspectRatio: 1,
|
|
||||||
preview: '.before',
|
|
||||||
background: false,
|
|
||||||
autoCropArea: 0.6,
|
|
||||||
zoomOnWheel: false,
|
|
||||||
crop: () => {
|
|
||||||
state.cropperImgBase64 = state.cropper.getCroppedCanvas().toDataURL('image/jpeg');
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// 暴露变量
|
|
||||||
defineExpose({
|
|
||||||
openDialog,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.cropper-warp {
|
|
||||||
display: flex;
|
|
||||||
.cropper-warp-left {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
height: 350px;
|
|
||||||
flex: 1;
|
|
||||||
border: 1px solid var(--el-border-color);
|
|
||||||
background: var(--el-color-white);
|
|
||||||
overflow: hidden;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
cursor: move;
|
|
||||||
border-radius: var(--el-border-radius-base);
|
|
||||||
.cropper-warp-left-img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.cropper-warp-right {
|
|
||||||
width: 150px;
|
|
||||||
height: 350px;
|
|
||||||
.cropper-warp-right-title {
|
|
||||||
text-align: center;
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
.cropper-warp-right-item {
|
|
||||||
margin: 15px 0;
|
|
||||||
.cropper-warp-right-value {
|
|
||||||
display: flex;
|
|
||||||
.cropper-warp-right-value-img {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
border-radius: var(--el-border-radius-circle);
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.cropper-size {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.cropper-warp-right-label {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--el-text-color-primary);
|
|
||||||
height: 30px;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -34,8 +34,8 @@
|
|||||||
* @description 分发验证码使用
|
* @description 分发验证码使用
|
||||||
* */
|
* */
|
||||||
import { computed, ref, toRefs, watchEffect, defineAsyncComponent } from 'vue';
|
import { computed, ref, toRefs, watchEffect, defineAsyncComponent } from 'vue';
|
||||||
const VerifySlide = defineAsyncComponent(() => import('/@/components/verifition/Verify/VerifySlide.vue'));
|
const VerifySlide = defineAsyncComponent(() => import('/@/components/Verifition/Verify/VerifySlide.vue'));
|
||||||
const VerifyPoints = defineAsyncComponent(() => import('/@/components/verifition/Verify/VerifyPoints.vue'));
|
const VerifyPoints = defineAsyncComponent(() => import('/@/components/Verifition/Verify/VerifyPoints.vue'));
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Vue2Verify',
|
name: 'Vue2Verify',
|
||||||
|
@ -57,9 +57,9 @@
|
|||||||
* VerifyPoints
|
* VerifyPoints
|
||||||
* @description 点选
|
* @description 点选
|
||||||
* */
|
* */
|
||||||
import { resetSize } from './../utils/util';
|
import { resetSize } from '../utils/util';
|
||||||
import { aesEncrypt } from './../utils/ase';
|
import { aesEncrypt } from '../utils/ase';
|
||||||
import { reqGet, reqCheck } from './../api/index';
|
import { reqGet, reqCheck } from '../api/index';
|
||||||
import { onMounted, reactive, ref, nextTick, toRefs, getCurrentInstance } from 'vue';
|
import { onMounted, reactive, ref, nextTick, toRefs, getCurrentInstance } from 'vue';
|
||||||
export default {
|
export default {
|
||||||
name: 'VerifyPoints',
|
name: 'VerifyPoints',
|
||||||
|
@ -61,9 +61,9 @@
|
|||||||
* VerifySlide
|
* VerifySlide
|
||||||
* @description 滑块
|
* @description 滑块
|
||||||
* */
|
* */
|
||||||
import { aesEncrypt } from './../utils/ase';
|
import { aesEncrypt } from '../utils/ase';
|
||||||
import { resetSize } from './../utils/util';
|
import { resetSize } from '../utils/util';
|
||||||
import { reqCheck, reqGet } from './../api/index';
|
import { reqCheck, reqGet } from '../api/index';
|
||||||
import { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue';
|
import { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue';
|
||||||
export default {
|
export default {
|
||||||
name: 'VerifySlide',
|
name: 'VerifySlide',
|
||||||
|
@ -12,7 +12,7 @@ import 'element-plus/dist/index.css';
|
|||||||
import VForm3 from 'form-designer'; //引入VForm3库
|
import VForm3 from 'form-designer'; //引入VForm3库
|
||||||
import 'form-designer/dist/designer.style.css'; //引入VForm3样式
|
import 'form-designer/dist/designer.style.css'; //引入VForm3样式
|
||||||
|
|
||||||
import elementIcons from '/@//components/svgIcon/svgicon';
|
import elementIcons from '/@/components/SvgIcon/svgicon';
|
||||||
import '/@/theme/index.scss';
|
import '/@/theme/index.scss';
|
||||||
import 'vxe-table/lib/style.css';
|
import 'vxe-table/lib/style.css';
|
||||||
import 'xe-utils';
|
import 'xe-utils';
|
||||||
|
@ -15,7 +15,7 @@ import * as CryptoJS from 'crypto-js';
|
|||||||
import { validateNull } from './validate';
|
import { validateNull } from './validate';
|
||||||
|
|
||||||
// 引入组件
|
// 引入组件
|
||||||
const SvgIcon = defineAsyncComponent(() => import('/@/components/svgIcon/index.vue'));
|
const SvgIcon = defineAsyncComponent(() => import('/@/components/SvgIcon/index.vue'));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出全局注册 element plus svg 图标
|
* 导出全局注册 element plus svg 图标
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="systemDeptDialog">
|
<script setup lang="ts" name="systemDeptDialog">
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { getObj, depttree, addObj, putObj } from '/@/api/admin/dept';
|
import { getObj, deptTree, addObj, putObj } from '/@/api/admin/dept';
|
||||||
import { useMessage } from '/@/hooks/message';
|
import { useMessage } from '/@/hooks/message';
|
||||||
|
|
||||||
// 定义子组件向父组件传值/事件
|
// 定义子组件向父组件传值/事件
|
||||||
@ -104,7 +104,7 @@ const onSubmit = async () => {
|
|||||||
|
|
||||||
// 从后端获取菜单信息
|
// 从后端获取菜单信息
|
||||||
const getDeptData = async () => {
|
const getDeptData = async () => {
|
||||||
depttree().then((res) => {
|
deptTree().then((res) => {
|
||||||
parentData.value = [];
|
parentData.value = [];
|
||||||
const dept = {
|
const dept = {
|
||||||
id: '0',
|
id: '0',
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="systemDept">
|
<script setup lang="ts" name="systemDept">
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table';
|
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||||
import { depttree, delObj } from '/@/api/admin/dept';
|
import { deptTree, delObj } from '/@/api/admin/dept';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { downBlobFile } from '/@/utils/other';
|
import { downBlobFile } from '/@/utils/other';
|
||||||
@ -87,7 +87,7 @@ const excelUploadRef = ref();
|
|||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
|
|
||||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
pageList: depttree,
|
pageList: deptTree,
|
||||||
queryForm: {
|
queryForm: {
|
||||||
deptName: '',
|
deptName: '',
|
||||||
},
|
},
|
||||||
|
@ -101,7 +101,7 @@ const handleNodeClick = (data: any) => {
|
|||||||
|
|
||||||
// 刷新树
|
// 刷新树
|
||||||
const handleRefreshTree = async (data: any) => {
|
const handleRefreshTree = async (data: any) => {
|
||||||
await dictTreeRef.value.getDeptTree();
|
await dictTreeRef.value.getdeptTree();
|
||||||
// 选择当前编辑、新增的节点
|
// 选择当前编辑、新增的节点
|
||||||
handleNodeClick(data);
|
handleNodeClick(data);
|
||||||
};
|
};
|
||||||
@ -117,7 +117,7 @@ const handleDelete = async (ids: string[]) => {
|
|||||||
try {
|
try {
|
||||||
await delObj(ids);
|
await delObj(ids);
|
||||||
useMessage().success(t('common.delSuccessText'));
|
useMessage().success(t('common.delSuccessText'));
|
||||||
dictTreeRef.value.getDeptTree();
|
dictTreeRef.value.getdeptTree();
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
useMessage().error(err.msg);
|
useMessage().error(err.msg);
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ import { useMessage } from '/@/hooks/message';
|
|||||||
const emit = defineEmits(['refresh']);
|
const emit = defineEmits(['refresh']);
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
// 引入组件
|
// 引入组件
|
||||||
const IconSelector = defineAsyncComponent(() => import('/@/components/iconSelector/index.vue'));
|
const IconSelector = defineAsyncComponent(() => import('/@/components/IconSelector/index.vue'));
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
<script lang="ts" name="systemRoleDialog" setup>
|
<script lang="ts" name="systemRoleDialog" setup>
|
||||||
import { rule } from '/@/utils/validate';
|
import { rule } from '/@/utils/validate';
|
||||||
import { depttree } from '/@/api/admin/dept';
|
import { deptTree } from '/@/api/admin/dept';
|
||||||
import { useMessage } from '/@/hooks/message';
|
import { useMessage } from '/@/hooks/message';
|
||||||
import { addObj, getObj, putObj, validateRoleCode, validateRoleName } from '/@/api/admin/role';
|
import { addObj, getObj, putObj, validateRoleCode, validateRoleName } from '/@/api/admin/role';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
@ -203,7 +203,7 @@ const getRoleData = (id: string) => {
|
|||||||
|
|
||||||
// 获取菜单结构数据
|
// 获取菜单结构数据
|
||||||
const getDeptData = () => {
|
const getDeptData = () => {
|
||||||
depttree().then((res: any) => {
|
deptTree().then((res: any) => {
|
||||||
dataForm.deptData = res.data;
|
dataForm.deptData = res.data;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="system-role-dialog-container">
|
<div class="system-role-dialog-container">
|
||||||
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" :close-on-click-modal="false" draggable>
|
<el-dialog :title="state.dialog.title" width="30%" v-model="state.dialog.isShowDialog" :close-on-click-modal="false" draggable>
|
||||||
<el-tree
|
<el-tree
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
ref="menuTree"
|
ref="menuTree"
|
||||||
|
@ -85,7 +85,7 @@
|
|||||||
import { addObj, getObj, putObj, validatePhone, validateUsername } from '/@/api/admin/user';
|
import { addObj, getObj, putObj, validatePhone, validateUsername } from '/@/api/admin/user';
|
||||||
import { list as roleList } from '/@/api/admin/role';
|
import { list as roleList } from '/@/api/admin/role';
|
||||||
import { list as postList } from '/@/api/admin/post';
|
import { list as postList } from '/@/api/admin/post';
|
||||||
import { depttree } from '/@/api/admin/dept';
|
import { deptTree } from '/@/api/admin/dept';
|
||||||
import { useDict } from '/@/hooks/dict';
|
import { useDict } from '/@/hooks/dict';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useMessage } from '/@/hooks/message';
|
import { useMessage } from '/@/hooks/message';
|
||||||
@ -252,7 +252,7 @@ const getUserData = (id: string) => {
|
|||||||
// 初始化部门数据
|
// 初始化部门数据
|
||||||
const getDeptData = () => {
|
const getDeptData = () => {
|
||||||
// 获取部门数据
|
// 获取部门数据
|
||||||
depttree().then((res) => {
|
deptTree().then((res) => {
|
||||||
deptData.value = res.data;
|
deptData.value = res.data;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -132,7 +132,7 @@
|
|||||||
|
|
||||||
<script lang="ts" name="systemUser" setup>
|
<script lang="ts" name="systemUser" setup>
|
||||||
import { delObj, pageList } from '/@/api/admin/user';
|
import { delObj, pageList } from '/@/api/admin/user';
|
||||||
import { depttree } from '/@/api/admin/dept';
|
import { deptTree } from '/@/api/admin/dept';
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table';
|
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||||
import { useDict } from '/@/hooks/dict';
|
import { useDict } from '/@/hooks/dict';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
@ -170,7 +170,7 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableS
|
|||||||
// 部门树使用的数据
|
// 部门树使用的数据
|
||||||
const deptData = reactive({
|
const deptData = reactive({
|
||||||
queryList: (name: String) => {
|
queryList: (name: String) => {
|
||||||
return depttree({
|
return deptTree({
|
||||||
deptName: name,
|
deptName: name,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-calendar v-model="calendar">
|
<el-calendar v-model="calendar">
|
||||||
<template #date-cell="{ data }">
|
<template #date-cell="{ data }">
|
||||||
<div style="width: 100%" @click="handleSchedule(data)">
|
<div class="calendar-cell" @click="handleSchedule(data)">
|
||||||
{{ data.day.split('-').slice(2).join('-') }}
|
{{ data.day.split('-').slice(2).join('-') }}
|
||||||
<span v-if="filterCellSelected(data)">
|
<div class="box-yello" v-if="filterCellSelected(data)"></div>
|
||||||
<el-icon><BellFilled /></el-icon>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-calendar>
|
</el-calendar>
|
||||||
@ -80,3 +78,27 @@ const handleSchedule = (data) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-calendar-table {
|
||||||
|
.calendar-cell {
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.box-yello {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: #e6a23c;
|
||||||
|
opacity: 0.6;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -148,7 +148,7 @@ import { getPage, delObj, addObj, putObj } from '/@/api/mp/wx-auto-reply';
|
|||||||
|
|
||||||
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
||||||
|
|
||||||
const WxReply = defineAsyncComponent(() => import('/@/components/wechart/wx-reply/index.vue'));
|
const WxReply = defineAsyncComponent(() => import('/@/components/Wechat/wx-reply/index.vue'));
|
||||||
|
|
||||||
// 点击树
|
// 点击树
|
||||||
const handleNodeClick = (node: any) => {
|
const handleNodeClick = (node: any) => {
|
||||||
|
@ -108,7 +108,7 @@ import { useDict } from '/@/hooks/dict';
|
|||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { fetchAccountList } from '/@/api/mp/wx-account';
|
import { fetchAccountList } from '/@/api/mp/wx-account';
|
||||||
|
|
||||||
const WxMsg = defineAsyncComponent(() => import('/@/components/wechart/wx-msg/index.vue'));
|
const WxMsg = defineAsyncComponent(() => import('/@/components/Wechat/wx-msg/index.vue'));
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
// 定义查询字典
|
// 定义查询字典
|
||||||
|
@ -93,9 +93,9 @@
|
|||||||
import { useMessageBox } from '/@/hooks/message';
|
import { useMessageBox } from '/@/hooks/message';
|
||||||
import { addObj, materialNewsUpdate } from '/@/api/mp/wx-material';
|
import { addObj, materialNewsUpdate } from '/@/api/mp/wx-material';
|
||||||
|
|
||||||
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/wechart/wx-material-select/main.vue'));
|
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/Wechat/wx-material-select/main.vue'));
|
||||||
|
|
||||||
const WxFileUpload = defineAsyncComponent(() => import('/@/components/wechart/fileUpload/index.vue'));
|
const WxFileUpload = defineAsyncComponent(() => import('/@/components/Wechat/fileUpload/index.vue'));
|
||||||
|
|
||||||
const WxMaterialSelectRef = ref();
|
const WxMaterialSelectRef = ref();
|
||||||
|
|
||||||
|
@ -140,8 +140,8 @@ import { delObj, getMaterialOther, getMaterialVideo, getPage } from '/@/api/mp/w
|
|||||||
|
|
||||||
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
||||||
const NewsForm = defineAsyncComponent(() => import('./components/news-form.vue'));
|
const NewsForm = defineAsyncComponent(() => import('./components/news-form.vue'));
|
||||||
const WxFileUpload = defineAsyncComponent(() => import('/@/components/wechart/fileUpload/index.vue'));
|
const WxFileUpload = defineAsyncComponent(() => import('/@/components/Wechat/fileUpload/index.vue'));
|
||||||
const WxNews = defineAsyncComponent(() => import('/@/components/wechart/wx-news/index.vue'));
|
const WxNews = defineAsyncComponent(() => import('/@/components/Wechat/wx-news/index.vue'));
|
||||||
|
|
||||||
const deptData = reactive({
|
const deptData = reactive({
|
||||||
queryList: (name: string) => {
|
queryList: (name: string) => {
|
||||||
|
@ -134,13 +134,13 @@ import { saveObj, getObj } from '/@/api/mp/wx-menu';
|
|||||||
import { fetchAccountList } from '/@/api/mp/wx-account';
|
import { fetchAccountList } from '/@/api/mp/wx-account';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
|
|
||||||
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/wechart/wx-material-select/main.vue'));
|
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/Wechat/wx-material-select/main.vue'));
|
||||||
|
|
||||||
const WxReply = defineAsyncComponent(() => import('/@/components/wechart/wx-reply/index.vue'));
|
const WxReply = defineAsyncComponent(() => import('/@/components/Wechat/wx-reply/index.vue'));
|
||||||
|
|
||||||
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
||||||
|
|
||||||
const WxNews = defineAsyncComponent(() => import('/@/components/wechart/wx-news/index.vue'));
|
const WxNews = defineAsyncComponent(() => import('/@/components/Wechat/wx-news/index.vue'));
|
||||||
|
|
||||||
// 点击树
|
// 点击树
|
||||||
const handleNodeClick = (node: any) => {
|
const handleNodeClick = (node: any) => {
|
||||||
|
@ -7,7 +7,7 @@ import topLevelAwait from 'vite-plugin-top-level-await';
|
|||||||
import { createStyleImportPlugin, VxeTableResolve } from 'vite-plugin-style-import';
|
import { createStyleImportPlugin, VxeTableResolve } from 'vite-plugin-style-import';
|
||||||
import viteCompression from 'vite-plugin-compression';
|
import viteCompression from 'vite-plugin-compression';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { svgBuilder } from '/@/components/iconSelector/index';
|
import { svgBuilder } from '/@/components/IconSelector/index';
|
||||||
|
|
||||||
const pathResolve = (dir: string) => {
|
const pathResolve = (dir: string) => {
|
||||||
return resolve(__dirname, '.', dir);
|
return resolve(__dirname, '.', dir);
|
||||||
|
Loading…
Reference in New Issue
Block a user