@@ -12,6 +12,7 @@ | |||
"@element-plus/icons-vue": "^1.1.4", | |||
"axios": "^0.27.2", | |||
"element-plus": "^2.1.7", | |||
"file-saver": "^2.0.5", | |||
"fuse.js": "^6.5.3", | |||
"js-cookie": "^3.0.1", | |||
"jsencrypt": "^3.2.1", | |||
@@ -20,7 +21,8 @@ | |||
"vue": "^3.2.2", | |||
"vue-fragment": "^1.5.2", | |||
"vue-router": "4", | |||
"vuex": "^4.0.2" | |||
"vuex": "^4.0.2", | |||
"xlsx": "^0.18.5" | |||
}, | |||
"devDependencies": { | |||
"@babel/types": "^7.16.0", | |||
@@ -39,6 +41,7 @@ | |||
"postcss": "^8.4.4", | |||
"prettier": "^2.4.1", | |||
"sass": "^1.44.0", | |||
"script-loader": "^0.7.2", | |||
"typescript": "^4.5.2", | |||
"vite": "^2.4.2", | |||
"vite-plugin-compression": "^0.3.6", |
@@ -24,9 +24,9 @@ | |||
<div style="max-height: 200px;margin-bottom: 10px;"> | |||
<!-- 图片 --> | |||
<img :src="SlideImgThreePng" class="as-radius-5px" style="height: 200px;width: 300px;"> | |||
<!-- 裁剪部分 --> | |||
<canvas class="as-radius-5px" id="canvas-cut" :width="canWidth * 2" :height="canHeight * 2" style="position: relative; | |||
background-color: #3FC0FC;z-index: 10;top: 0px;box-shadow: 1px 1px 2.5px #333;" | |||
<!-- 裁剪部分 background-color: #3FC0FC; --> | |||
<canvas class="as-radius-5px" id="canvas-cut" :width="canWidth * 2" :height="canHeight * 2" | |||
style="position: relative;z-index: 10;top: 0px;box-shadow: 1px 1px 2.5px #333;" | |||
:style="`left:${canLeft}px;top:${initTop}px;width: ${canWidth}px;height: ${canHeight}px;`"> | |||
</canvas> | |||
<!-- 阴影部分 --> |
@@ -37,34 +37,39 @@ | |||
<el-dialog v-model="dialogFormVisible" :title="`${title}`"> | |||
<!-- 是否自定义Dialog --> | |||
<div v-if="tableFrom.customDialog"> | |||
<slot name="search" :searchCondition="searchCondition" /> | |||
</div> | |||
<div v-else> | |||
<!-- 系统内容 --> | |||
<el-form ref="ruleFormRef" :rules="rules" :model="form"> | |||
<el-form-item v-for="(item,index) in tableFrom.field" :label="item.label" :prop="item.prop" | |||
:label-width="formLabelWidth" > | |||
<!-- 输入框 --> | |||
<div style="width: 100%;" v-if="item.form.type === 'input'"> | |||
<el-input v-model="form[item.prop]" :type="item.itemType" | |||
:placeholder="item.form.placeholder" /> | |||
</div> | |||
<!-- 选择框 --> | |||
<div style="width: 100%;" v-else-if="item.form.type === 'select'"> | |||
<el-select style="width: 100%;" v-model="form[item.prop]" | |||
:placeholder="item.form.placeholder"> | |||
<el-option v-for="(itemData,index) in item.form.listData" :label="itemData.label" | |||
:value="itemData.value" /> | |||
</el-select> | |||
</div> | |||
<!-- 日期框 --> | |||
<div style="width: 100%;" v-else-if="item.form.type === 'date'"> | |||
<el-date-picker style="width: 100%;" v-model="form[item.prop]" | |||
:value-format="item.form.valueFormat" :type="item.form.itemType" | |||
:placeholder="item.form.placeholder" /> | |||
</div> | |||
</el-form-item> | |||
</el-form> | |||
</div> | |||
<!-- 系统内容 --> | |||
<el-form ref="ruleFormRef" :rules="rules" :model="form"> | |||
<el-form-item v-for="(item,index) in tableFrom.field" :label="item.label" :prop="item.prop" | |||
:label-width="formLabelWidth"> | |||
<!-- 输入框 --> | |||
<div style="width: 100%;" v-if="item.form.type === 'input'"> | |||
<el-input v-model="form[item.prop]" :type="item.itemType" | |||
:placeholder="item.form.placeholder" /> | |||
</div> | |||
<!-- 选择框 --> | |||
<div style="width: 100%;" v-else-if="item.form.type === 'select'"> | |||
<el-select style="width: 100%;" v-model="form[item.prop]" :placeholder="item.form.placeholder"> | |||
<el-option v-for="(itemData,index) in item.form.listData" :label="itemData.label" | |||
:value="itemData.value" /> | |||
</el-select> | |||
</div> | |||
<!-- 日期框 --> | |||
<div style="width: 100%;" v-else-if="item.form.type === 'date'"> | |||
<el-date-picker style="width: 100%;" v-model="form[item.prop]" | |||
:value-format="item.form.valueFormat" :type="item.form.itemType" | |||
:placeholder="item.form.placeholder" /> | |||
</div> | |||
</el-form-item> | |||
</el-form> | |||
<template #footer> | |||
<template v-if="!tableFrom.customDialog" #footer> | |||
<span class="dialog-footer"> | |||
<el-button @click="cancel">取消</el-button> | |||
<el-button type="primary" @click="affirm(ruleFormRef)">提交</el-button> | |||
@@ -86,7 +91,6 @@ | |||
// 声明事件 | |||
const emit = defineEmits(['add', 'remove', 'refresh', 'edit', 'search', 'submit', 'handleEdit', 'handleDelete']) | |||
// 声明props | |||
const props = defineProps({ | |||
homeData: { //表单配置 | |||
@@ -99,11 +103,35 @@ | |||
type: Array, | |||
default: function () { | |||
return [{ | |||
name: '测试数据' | |||
}, { | |||
name: '测试数据' | |||
one: '范晓东', | |||
two: '贵ZEY123', | |||
three: '蓝色', | |||
four: '52011328220201499572', | |||
five: '正常', | |||
six: '储值卡', | |||
seven:'52011328220201499572', | |||
eight:'正常', | |||
data:'2020-12-24' | |||
}, { | |||
name: '测试数据' | |||
one: '李丽霞', | |||
two: '贵ANS989', | |||
three: '蓝色', | |||
four: '52011328220201499572', | |||
five: '正常', | |||
six: '储值卡', | |||
seven:'52011328220200034040', | |||
eight:'正常', | |||
data:'2021-08-24' | |||
},{ | |||
one: '沈波', | |||
two: '贵ABB123', | |||
three: '蓝色', | |||
four: '52011328220201499572', | |||
five: '正常', | |||
six: '储值卡', | |||
seven:'52011328220201499572', | |||
eight:'正常', | |||
data:'2022-01-22' | |||
}] | |||
} | |||
} | |||
@@ -114,7 +142,7 @@ | |||
const testData = ref(props.tableData) //表单数据 | |||
const visible = ref(false) //删除提示框是否显示 | |||
const dialogFormVisible = ref(false) //表单弹框是否显示 | |||
const formLabelWidth = '80px' //默认表单宽度 | |||
const formLabelWidth = '100px' //默认表单宽度 | |||
const title = ref('添加') //表单标题 | |||
const DStart = ref(true) //删除按钮状态 | |||
const EStart = ref(true) //编辑按钮状态 |
@@ -6,7 +6,8 @@ export const Data = { | |||
}, | |||
table: { | |||
style: '', | |||
customDialog: false, | |||
customDialog: false, //自定义Dialog (默认false) | |||
titleDialog: '补卡信息', //自定义Dialog标题 | |||
extend: [{ | |||
type: 'index', | |||
label: '序号', | |||
@@ -14,7 +15,7 @@ export const Data = { | |||
}], | |||
field: [ //表格 | |||
{ | |||
prop: 'name', | |||
prop: 'one', | |||
label: '客户名称', | |||
width: '120', | |||
overflow: true, | |||
@@ -24,7 +25,7 @@ export const Data = { | |||
placeholder: '请输入客户名称' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'two', | |||
label: '车牌号码', | |||
width: '120', | |||
form: { | |||
@@ -33,7 +34,7 @@ export const Data = { | |||
placeholder: '请输入车牌号码' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'three', | |||
label: '车牌颜色', | |||
width: '120', | |||
form: { | |||
@@ -42,7 +43,7 @@ export const Data = { | |||
placeholder: '请输入车牌颜色' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'four', | |||
label: '卡号', | |||
width: '180', | |||
form: { | |||
@@ -51,7 +52,7 @@ export const Data = { | |||
placeholder: '卡号' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'five', | |||
label: '卡片状态', | |||
width: '120', | |||
form: { | |||
@@ -60,7 +61,7 @@ export const Data = { | |||
placeholder: '请输入卡片状态' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'six', | |||
label: '卡片类型', | |||
width: '120', | |||
form: { | |||
@@ -70,7 +71,7 @@ export const Data = { | |||
} | |||
}, | |||
{ | |||
prop: 'name', | |||
prop: 'seven', | |||
label: 'OBU编号', | |||
width: '180', | |||
form: { | |||
@@ -79,9 +80,9 @@ export const Data = { | |||
placeholder: 'OBU编号' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'eight', | |||
label: 'OBU状态', | |||
width: '120', | |||
width: '', | |||
form: { | |||
required: true, | |||
type: 'input', |
@@ -11,7 +11,7 @@ export const Data = { | |||
}], | |||
field: [ //表格 | |||
{ | |||
prop: 'name', | |||
prop: 'one', | |||
label: '客户名称', | |||
width: '120', | |||
overflow: true, | |||
@@ -21,7 +21,7 @@ export const Data = { | |||
placeholder: '请输入客户名称' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'two', | |||
label: '证件类型', | |||
width: '180', | |||
form: { | |||
@@ -30,7 +30,7 @@ export const Data = { | |||
placeholder: '请输入证件类型' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'three', | |||
label: '证件号码', | |||
width: '180', | |||
form: { | |||
@@ -39,7 +39,7 @@ export const Data = { | |||
placeholder: '请输入证件号码' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'four', | |||
label: '车牌号码', | |||
width: '120', | |||
form: { | |||
@@ -48,7 +48,7 @@ export const Data = { | |||
placeholder: '请输入车牌号码' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'five', | |||
label: '卡号', | |||
width: '180', | |||
form: { | |||
@@ -57,7 +57,7 @@ export const Data = { | |||
placeholder: '请输入卡号' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'data', | |||
label: '卡片状态', | |||
width: '120', | |||
form: { | |||
@@ -67,7 +67,7 @@ export const Data = { | |||
} | |||
}, | |||
{ | |||
prop: 'name', | |||
prop: 'seven', | |||
label: '到期时间', | |||
width: '180', | |||
form: { |
@@ -13,7 +13,7 @@ export const Data = { | |||
}], | |||
field: [ //表格 | |||
{ | |||
prop: 'name', | |||
prop: 'one', | |||
label: '客户名称', | |||
width: '120', | |||
overflow: true, | |||
@@ -23,7 +23,7 @@ export const Data = { | |||
placeholder: '请输入客户名称' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'two', | |||
label: '车牌号码', | |||
width: '120', | |||
form: { | |||
@@ -32,7 +32,7 @@ export const Data = { | |||
placeholder: '请输入车牌号码' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'three', | |||
label: '车牌颜色', | |||
width: '120', | |||
form: { | |||
@@ -41,7 +41,7 @@ export const Data = { | |||
placeholder: '请输入车牌颜色' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'four', | |||
label: '卡号', | |||
width: '180', | |||
form: { | |||
@@ -50,7 +50,7 @@ export const Data = { | |||
placeholder: '卡号' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'five', | |||
label: '卡片状态', | |||
width: '120', | |||
form: { | |||
@@ -59,7 +59,7 @@ export const Data = { | |||
placeholder: '请输入卡片状态' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'six', | |||
label: '卡片类型', | |||
width: '120', | |||
form: { | |||
@@ -69,7 +69,7 @@ export const Data = { | |||
} | |||
}, | |||
{ | |||
prop: 'name', | |||
prop: 'seven', | |||
label: 'OBU编号', | |||
width: '180', | |||
form: { | |||
@@ -78,7 +78,7 @@ export const Data = { | |||
placeholder: 'OBU编号' | |||
} | |||
}, { | |||
prop: 'name', | |||
prop: 'eight', | |||
label: 'OBU状态', | |||
width: '120', | |||
form: { |
@@ -5,6 +5,8 @@ export const cfg = { | |||
table: { //table 样式配置 | |||
style: '', //默认表格样式 | |||
border: false, //是否添加边框(默认false) | |||
customDialog: false, //自定义Dialog (默认false) | |||
titleDialog: '', //自定义Dialog标题 | |||
extend: [{ //表头拓展 | |||
type: '', //类型:selection,index,expand | |||
width: '', //表头宽度 |
@@ -67,7 +67,6 @@ | |||
} | |||
//提示点击 | |||
function hint(msg) { | |||
if (msg === '退出登录') { | |||
Cookies.remove('token') | |||
Cookies.remove('rememberPSWD') |
@@ -1,5 +1,5 @@ | |||
<template> | |||
<div style="font-size: 13px; color: rgb(209, 65, 65)"> | |||
<div style="font-size: 13px; color: rgb(209, 65, 65);margin-left: 16px;"> | |||
注:目前仅支持中国工商银行贵州省分行、中国工商银行股份有限公司贵州省分行、农业银行、部互联网发行、 | |||
世纪恒通、工行微ETC、工总行直连模式三、贵州农信联社、贵州工行微ETC、世纪恒通GH查询下黑原因! | |||
</div> | |||
@@ -40,13 +40,13 @@ | |||
<el-button v-model="input4" type="success" :icon="Search" @click="search">搜索</el-button> | |||
<el-button type="warning" :icon="Refresh" @click="reset">重置</el-button> | |||
<el-button type="primary" :icon="Plus" @click="dialogFormVisible = true">添加</el-button> | |||
<el-dialog v-model="dialogFormVisible" title="卡黑名单-操作(下黑反白)"> | |||
<el-dialog v-model="dialogFormVisible" title="卡黑名单-操作(下黑反白)" class="as-gravity-center"> | |||
<el-form :model="form"> | |||
<el-form-item label="卡号:" :label-width="150"> | |||
<el-form-item label="卡号:" :label-width="100"> | |||
<el-input v-model="form.name" style="width: 215px" /> | |||
</el-form-item> | |||
<el-form-item label="黑名单类型:" :label-width="150"> | |||
<el-select v-model="form" placeholder="请选择黑名单类型"> | |||
<el-form-item label="黑名单类型:" :label-width="100"> | |||
<el-select v-model="form.region" placeholder="请选择黑名单类型"> | |||
<el-option label="卡挂失" value="shanghai" /> | |||
<el-option label="无卡挂起" value="beijing" /> | |||
<el-option label="无卡销售" value="shanghai" /> | |||
@@ -56,13 +56,13 @@ | |||
<el-option label="储值卡余额不足" value="shanghai" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="状态类型:" :label-width="150"> | |||
<el-form-item label="状态类型:" :label-width="100"> | |||
<el-select v-model="form.region" placeholder="请选择状态类型"> | |||
<el-option label="下黑" value="shanghai" /> | |||
<el-option label="反白" value="beijing" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="原因:" :label-width="150"> | |||
<el-form-item label="原因:" :label-width="100"> | |||
<el-input v-model="form.desc" type="textarea" /> | |||
</el-form-item> | |||
</el-form> | |||
@@ -91,42 +91,42 @@ | |||
<el-button @click="dialogFormVisible1 = true" style="border-style: none">详情</el-button> | |||
</el-table-column> | |||
</el-table> | |||
<el-dialog v-model="dialogFormVisible1"> | |||
<el-dialog v-model="dialogFormVisible1" class="as-gravity-center"> | |||
<span class="as-gravity-center" style="font-size: 22px">基本信息</span> | |||
<el-form :model="form1" style="padding-top: 12px"> | |||
<el-form-item label="卡号:" :label-width="150"> | |||
<el-form-item label="卡号:" :label-width="100"> | |||
<el-input v-model="form1.data" style="width: 215px" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<el-form :model="form1"> | |||
<el-form-item label="车辆号:" :label-width="150"> | |||
<el-form-item label="车辆号:" :label-width="100"> | |||
<el-input v-model="form1.data1" style="width: 215px" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<el-form :model="form1"> | |||
<el-form-item label="机构名称:" :label-width="150"> | |||
<el-form-item label="机构名称:" :label-width="100"> | |||
<el-input v-model="form1.data2" style="width: 215px" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<el-form :model="form1"> | |||
<el-form-item label="黑名单类型:" :label-width="150"> | |||
<el-form-item label="黑名单类型:" :label-width="100"> | |||
<el-input v-model="form1.data3" style="width: 215px" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<span class="as-gravity-center" style="font-size: 22px">黑名单上传日志</span> | |||
<el-form :model="form1" style="padding-top: 12px"> | |||
<el-form-item label="上传日志:" :label-width="150" style="color: rgb(209, 65, 65)"> | |||
<el-form-item label="上传日志:" :label-width="100" style="color: rgb(209, 65, 65)"> | |||
<el-input v-model="form1.data4" type="textarea" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<span class="as-gravity-center" style="font-size: 22px">渠道下黑原因</span> | |||
<el-form :model="form1" style="padding-top: 12px"> | |||
<el-form-item label="查询结果:" :label-width="150" style="color: rgb(209, 65, 65)"> | |||
<el-form-item label="查询结果:" :label-width="100" style="color: rgb(209, 65, 65)"> | |||
<el-input v-model="form1.data5" style="width: 215px" disabled /> | |||
</el-form-item> | |||
</el-form> | |||
<el-form :model="form1"> | |||
<el-form-item label="下黑原因:" :label-width="150" style="color: rgb(209, 65, 65)"> | |||
<el-form-item label="下黑原因:" :label-width="100" style="color: rgb(209, 65, 65)"> | |||
<el-input v-model="form1.data6" type="textarea" disabled /> | |||
</el-form-item> | |||
</el-form> |
@@ -12,7 +12,7 @@ | |||
<el-date-picker | |||
v-model="value1" | |||
type="datetime" | |||
placeholder="开始日志日期" | |||
placeholder="开始日期" | |||
format="YYYY/MM/DD hh:mm:ss" | |||
/> | |||
@@ -22,7 +22,7 @@ | |||
v-model="value1" | |||
type="datetime" | |||
placeholder="结束日志日期" | |||
placeholder="结束日期" | |||
format="YYYY/MM/DD hh:mm:ss" | |||
style="margin-left: 5px;" | |||
/> | |||
@@ -31,14 +31,14 @@ | |||
<div class="topstyle"> | |||
<el-button v-model="input4" type="success" :icon="Search" @click="search">搜索</el-button> | |||
<el-button type="warning" :icon="Refresh" @click="reset">重置</el-button> | |||
<el-button type="primary" plain @click="exportCurrentPage">导出当前页</el-button> | |||
<el-button type="primary" plain @click="exportAll">导出所有</el-button> | |||
<el-button type="primary" plain @click="excelExport()">导出当前页</el-button> | |||
<el-button type="primary" plain @click="excelExport()">导出所有</el-button> | |||
</div> | |||
</div> | |||
<div style="padding-top: 12px"> | |||
<el-table :data="tableData" border style="width: 100%"> | |||
<el-table-column property="date1" label="序号" width="60" /> | |||
<el-table-column property="date2" label="ETC卡号" width="140" /> | |||
<el-table-column property="date2" label="ETC卡号" width="190" /> | |||
<el-table-column property="date3" label="车牌号" width="100" /> | |||
<el-table-column property="date4" label="消费类型" width="90" /> | |||
<el-table-column property="date5" label="入口时间" width="110" /> | |||
@@ -97,14 +97,33 @@ const setCurrent = (row?: User) => { | |||
const handleCurrentChange = (val: User | undefined) => { | |||
currentRow.value = val | |||
} | |||
// const objectService = { | |||
// url: 'http://localhost:8888/list2', | |||
// } | |||
// const { data } = useRequest(objectService) | |||
// console.log(data.value); | |||
// const tableData = data | |||
//点击导出 | |||
function excelExport(){ | |||
import('@/vendor/Export2Excel').then(excel => { | |||
const tHeader = ['用户名称', '账号', '手机号', '所属公司','用户角色','创建者','部门名称','创建时间','最近登录时间'] | |||
const filterVal = ['userName', 'email', 'phonenumber', 'orgName','roleName','createBy','deptName','createTime','loginTime'] | |||
const list = this.list | |||
const data = this.formatJson(filterVal, list) | |||
excel.export_json_to_excel({ | |||
header: tHeader, | |||
data, | |||
filename: "账号列表", | |||
// filename: this.filename, | |||
autoWidth: this.autoWidth, | |||
bookType: this.bookType | |||
}) | |||
this.downloadLoading = false | |||
}) | |||
} | |||
function formatJson(filterVal, jsonData) { | |||
return this.dataList.map(v => filterVal.map(j => { | |||
if (j === 'timestamp') { | |||
return parseTime(v[j]) | |||
} else { | |||
return v[j] | |||
} | |||
})) | |||
} | |||
const tableData: User[] = [ | |||
{ | |||
date1: '1', |