Commit d4ad83e9 authored by Wallen姚文辉's avatar Wallen姚文辉

添加功能

parents 3e56bc3a 24d4980c
.layout{border:1px solid #d7dde4;background:#f5f7f9;position:relative;border-radius:4px;overflow:hidden}.layout-logo{width:100px;height:30px;background:#5b6270;border-radius:3px;float:left;position:relative;top:15px;left:20px}.layout-nav{margin:0 auto;display:flex}.card{height:300px;background:rgba(103,176,185,.7);transform:translateY(90%);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:30px 5px 15px 5px;text-align:center}.login{max-width:400px;margin:0 auto!important;transform:translateY(40%)}.chart{height:100vh}.info-card{margin:10px 5px 10px 5px;background-color:#fff;border-radius:8px;box-shadow:0 0 8px 0 hsla(0,0%,71%,.58)}#my_table{text-align:left;width:90%;margin:0 10px 10px 10px;margin-right:auto;margin-left:auto}#my-table td:first-child{width:80%}#my-table td:nth-child(2){width:10%}.header_style{border-bottom:1px solid #dcdee2}.center_style{width:90%;margin:auto}.background_sytle{background-color:#f8f8f9;padding-top:.5px;padding-bottom:.5px;border-radius:8px;margin-top:2px;margin-bottom:2px}.near_left{width:25%;display:inline-block;height:100%}.near_right{width:75%;display:inline-block}.fontstyle{text-align:left}@keyframes changDeg{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.demo-spin-icon-load{color:#2b85e4;animation:changDeg 2s linear .2s infinite}.vertical-center-modal{display:flex;align-items:center;justify-content:center}.vertical-center-modal .ivu-modal{top:0}a{text-decoration:none}a:hover{text-decoration:underline}.editbutton:hover{background-color:#c6e2ff}.fileBox{display:flex;flex-wrap:wrap;margin-top:20px;min-height:170px;background-color:beige}.file{height:150px;width:150px;margin:10px 10px 10px 10px;text-align:center;border-radius:10px}.pop{position:absolute;background:#fff;box-shadow:1px 1px 4px #888;font-size:12px;border-radius:5px;z-index:999}.pop>div{margin:15px 10px;cursor:pointer}#sheet{flex:1} .layout{border:1px solid #d7dde4;background:#f5f7f9;position:relative;border-radius:4px;overflow:hidden}.layout-logo{width:100px;height:30px;background:#5b6270;border-radius:3px;float:left;position:relative;top:15px;left:20px}.layout-nav{margin:0 auto;display:flex}.card{height:300px;background:rgba(103,176,185,.7);transform:translateY(90%);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:30px 5px 15px 5px;text-align:center}.login{max-width:400px;margin:0 auto!important;transform:translateY(40%)}.chart{height:100vh}.info-card{margin:10px 5px 10px 5px;background-color:#fff;border-radius:8px;box-shadow:0 0 8px 0 hsla(0,0%,71%,.58)}#my_table{text-align:left;width:90%;margin:0 10px 10px 10px;margin-right:auto;margin-left:auto}#my-table td:first-child{width:80%}#my-table td:nth-child(2){width:10%}.header_style{border-bottom:1px solid #dcdee2}.center_style{width:90%;margin:auto}.background_sytle{background-color:#f8f8f9;padding-top:.5px;padding-bottom:.5px;border-radius:8px;margin-top:2px;margin-bottom:2px}.near_left{width:25%;display:inline-block;height:100%}.near_right{width:75%;display:inline-block}.fontstyle{text-align:left}@keyframes changDeg{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.demo-spin-icon-load{color:#2b85e4;animation:changDeg 2s linear .2s infinite}a{text-decoration:none}a:hover{text-decoration:underline}.editbutton:hover{background-color:#c6e2ff}.fileBox{display:flex;flex-wrap:wrap;margin-top:20px;min-height:170px;background-color:beige}.file{height:150px;width:150px;margin:10px 10px 10px 10px;text-align:center;border-radius:10px}.pop{position:absolute;background:#fff;box-shadow:1px 1px 4px #888;font-size:12px;border-radius:5px;z-index:999}.pop>div{margin:15px 10px;cursor:pointer}#sheet{flex:1}.phone{width:250px;height:500px;background-color:#e7f6ff;border-radius:20px;border-style:outset;border-width:10px;border-color:#18172c;text-align:center}.transition-box{margin-top:32px;width:100%;border-radius:4px;background-color:#409eff;text-align:center;color:#fff;padding:24px 0}.vertical-center-modal{display:flex;align-items:center;justify-content:center}.vertical-center-modal .ivu-modal{top:0}
\ No newline at end of file \ No newline at end of file
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="/dist/plugins/css/pluginsCss.css"/><link rel="stylesheet" href="/dist/plugins/plugins.css"/><link rel="stylesheet" href="/dist/css/luckysheet.css"/><link rel="stylesheet" href="/dist/assets/iconfont/iconfont.css"/><script src="/dist/plugins/js/plugin.js"></script><script src="/dist/luckysheet.umd.js"></script><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.2e737858.js"></script><script defer="defer" src="/js/app.7740c213.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.f806b464.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but yinhe_test doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> <!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="/dist/plugins/css/pluginsCss.css"/><link rel="stylesheet" href="/dist/plugins/plugins.css"/><link rel="stylesheet" href="/dist/css/luckysheet.css"/><link rel="stylesheet" href="/dist/assets/iconfont/iconfont.css"/><script src="/dist/plugins/js/plugin.js"></script><script src="/dist/luckysheet.umd.js"></script><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.c8e13258.js"></script><script defer="defer" src="/js/app.f2362e6e.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.df7fa4e2.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but yinhe_test doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file \ No newline at end of file
"use strict";(self["webpackChunkyinhe_test"]=self["webpackChunkyinhe_test"]||[]).push([[10],{7010:function(e,n,t){t.r(n),t.d(n,{default:function(){return a}});var r=t(5796);function c(e,n,t,c,o,s){const u=(0,r.resolveComponent)("Exception");return(0,r.openBlock)(),(0,r.createBlock)(u,{type:"404"})}var o={},s=t(1241);const u=(0,s.A)(o,[["render",c]]);var a=u}}]); "use strict";(self["webpackChunkyinhe_test"]=self["webpackChunkyinhe_test"]||[]).push([[10],{7010:function(e,n,t){t.r(n),t.d(n,{default:function(){return a}});var r=t(5796);function c(e,n,t,c,o,s){const u=(0,r.resolveComponent)("Exception");return(0,r.openBlock)(),(0,r.createBlock)(u,{type:"404"})}var o={},s=t(1241);const u=(0,s.A)(o,[["render",c]]);var a=u}}]);
//# sourceMappingURL=10.877e7673.js.map //# sourceMappingURL=10.e541696a.js.map
\ No newline at end of file \ No newline at end of file
{"version":3,"file":"js/10.877e7673.js","mappings":"0QACIA,EAAAA,EAAAA,aAAwBC,EAAA,CAAbC,KAAK,O,CAGhB,OAEC,E,UCDL,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O","sources":["webpack://yinhe_test/./src/views/error/index.vue","webpack://yinhe_test/./src/views/error/index.vue?45db"],"sourcesContent":["<template>\n <Exception type=\"404\" />\n</template>\n<script>\n export default {\n \n }\n</script>","import { render } from \"./index.vue?vue&type=template&id=fda2373e\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createBlock","_component_Exception","type","__exports__","render"],"sourceRoot":""} {"version":3,"file":"js/10.e541696a.js","mappings":"0QACIA,EAAAA,EAAAA,aAAwBC,EAAA,CAAbC,KAAK,O,CAGhB,OAEC,E,UCDL,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O","sources":["webpack://yinhe_test/./src/views/error/index.vue","webpack://yinhe_test/./src/views/error/index.vue?45db"],"sourcesContent":["<template>\n <Exception type=\"404\" />\n</template>\n<script>\n export default {\n \n }\n</script>","import { render } from \"./index.vue?vue&type=template&id=fda2373e\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createBlock","_component_Exception","type","__exports__","render"],"sourceRoot":""}
\ No newline at end of file \ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -14,8 +14,10 @@ import TestReport from '@/views/tool/TestReport'; ...@@ -14,8 +14,10 @@ import TestReport from '@/views/tool/TestReport';
import ReportLsit from '@/views/tool/ReportLsit'; import ReportLsit from '@/views/tool/ReportLsit';
import AduitReportList from '@/views/tool/AduitReportList'; import AduitReportList from '@/views/tool/AduitReportList';
import TestCase from '@/views/autotest/TestCase.vue'; import TestCase from '@/views/autotest/TestCase.vue';
import RequestsTemplate from '@/views/tool/RequestsTemplate.vue'; // import RequestsTemplate from '@/views/tool/RequestsTemplate.vue';
import MailTool from '@/views/tool/MailTool.vue';
import MoveUIRun from '@/views/autotest/MoveUIRun.vue'; import MoveUIRun from '@/views/autotest/MoveUIRun.vue';
import CreateOrder from '@/views/tool/CreateOrder.vue';
import Echarts from "vue-echarts"; import Echarts from "vue-echarts";
import 'echarts'; import 'echarts';
import ViewUIPlus from 'view-ui-plus'; import ViewUIPlus from 'view-ui-plus';
...@@ -87,16 +89,21 @@ const routers = [ ...@@ -87,16 +89,21 @@ const routers = [
path: 'testcase', path: 'testcase',
name: 'testcase', name: 'testcase',
component: TestCase component: TestCase
},{ }, {
path:'moveuirun', path: 'moveuirun',
name:'moveuirun', name: 'moveuirun',
component: MoveUIRun component: MoveUIRun
}, },
// { {
// path:'requestsTemplate', path: 'createorder',
// name:'requestsTemplate', name: 'createorder',
// component:RequestsTemplate component: CreateOrder
// }, },
{
path: 'mailtool',
name: 'mailtool',
component: MailTool
}
] ]
axios.interceptors.request.use(function (config) { axios.interceptors.request.use(function (config) {
......
<template>
<PageHeader :title="title">
</PageHeader>
<div style="margin-top: 20px">
<Row>
<Col span="12" style="text-align: center;">
<a target="_blank" href="http://192.168.11.185:8080/view/%E5%A4%96%E9%83%A8%E5%8F%AF%E8%AE%BF%E9%97%AE%EF%BC%88%E7%94%A8%E4%BA%8E%E5%88%9B%E5%8D%95%EF%BC%89/job/%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%88%9B%E5%8D%95/"> 生产环境造单(完善客户信息+证件审核)</a>
</Col>
<Col span="12">
<Button @click="copyUser()" style="display: inline;margin-right: 10px;">复制账号</Button>
<Button @click="copyPass()" style="display: inline;">复制密码</Button>
</Col>
</Row>
</div>
</template>
<script setup>
import { ref,getCurrentInstance } from 'vue'
import useClipboard from 'vue-clipboard3';
const { proxy, ctx } = getCurrentInstance()
let Message = proxy.$Message
const { toClipboard } = useClipboard();
const page_id = ref(22)
const title = ref("生产环境造单")
async function copyUser(){
const text="admin0001"
await toClipboard(text)
Message.success("复制成功")
}
async function copyPass(){
const text="123456"
await toClipboard(text)
Message.success("复制成功")
}
</script>
<style>
.vertical-center-modal {
display: flex;
align-items: center;
justify-content: center;
}
.vertical-center-modal .ivu-modal {
top: 0;
}
</style>
\ No newline at end of file
<template>
<PageHeader :title="title">
</PageHeader>
<div style="margin-top: 20px">
<Divider orientation="left">发送邮件</Divider>
<RadioGroup v-model="buttonSize" type="button">
<Radio label="large" @click="showMoadl('获批')">制作并发送获批信</Radio>
<Radio label="default" @click="showMoadl('拒签')">制作并发送拒签信</Radio>
<Radio label="small" @click="showMoadl('补件')">制作并发送补件信</Radio>
</RadioGroup>
<Divider orientation="left">模拟影刀</Divider>
<Button @click="modal2 = true">制作visa并发送</Button>
<Modal :title="Ty.title" v-model="modal" class-name="vertical-center-modal" @on-cancel="closeShow">
<Form ref="letterRef" :model="letterInfo" :rules="letterRule" :label-width="80">
<FormItem label="姓名" prop="name">
<Input v-model="letterInfo.name" placeholder="请输入用户姓名"></Input>
</FormItem>
<FormItem label="档案号" prop="fileNumber">
<Input v-model="letterInfo.fileNumber" placeholder="请输入档案号"></Input>
</FormItem>
<FormItem v-if="Ty.getday" :label="Ty.getday">
<DatePicker type="date" :placeholder="'请输入' + Ty.getday" v-model="letterInfo.getday"></DatePicker>
</FormItem>
<FormItem v-if="Ty.deadline" :label="Ty.deadline">
<DatePicker type="date" placeholder="请输入缴费截至日期" v-model="letterInfo.deadline"></DatePicker>
</FormItem>
<FormItem label="环境" prop="environment">
<Select v-model="letterInfo.environment">
<Option v-for="item in environment" :value="item.id" :key="item.id">{{ item.type }}</Option>
</Select>
</FormItem>
</Form>
<template #footer>
<Button @click="closeShow()">取消</Button>
<Button :disabled="letterButton" type="primary" @click="send()">发送</Button>
</template>
</Modal>
<Modal title="电子签证" v-model="modal2" class-name="vertical-center-modal" @on-cancel="closeShow2">
<Form ref="visaRef" :model="visaInfo" :rules="visaRule" :label-width="80">
<FormItem label="姓名" prop="name">
<Input v-model="visaInfo.name" placeholder="请输入用户姓名"></Input>
</FormItem>
<FormItem label="档案号" prop="file_number">
<Input v-model="visaInfo.file_number" placeholder="请输入档案号"></Input>
</FormItem>
<FormItem label="订单号" prop="order_id">
<Input v-model="visaInfo.order_id" placeholder="请输入订单号"></Input>
</FormItem>
<FormItem label="赴港证件" prop="go_type">
<Select v-model="visaInfo.go_type">
<Option v-for="item in pass" :value="item.type">{{ item.name }}</Option>
</Select>
</FormItem>
<FormItem label="缴费时间">
<DatePicker type="date" placeholder="请输入缴费时间" v-model="visaInfo.pay_time"></DatePicker>
</FormItem>
<FormItem label="签证激活截止日期">
<DatePicker type="date" placeholder="请输入签证激活截止日期(首次赴港拘留期限)" v-model="visaInfo.deadline">
</DatePicker>
</FormItem>
<FormItem label="环境" prop="environment">
<Select v-model="visaInfo.environment">
<Option v-for="item in environment" :value="item.id" :key="item.id">{{ item.type }}</Option>
</Select>
</FormItem>
</Form>
<template #footer>
<Button @click="closeShow2()">取消</Button>
<Button :disabled="visaButton" type="primary" @click="send2()">发送</Button>
</template>
</Modal>
</div>
</template>
<script setup>
import { ref, getCurrentInstance, reactive, watch } from 'vue'
const { proxy, ctx } = getCurrentInstance()
let Message = proxy.$Message
let http = proxy.$request
const page_id = ref(22)
let title = ref("邮件工具")
let modal = ref(false)
let modal2 = ref(false)
let senType = ref(null)
let letterButton=ref(false)
let visaButton=ref(false)
const Ty = reactive({
title: null,
getday: null,
deadline: null
})
const letterRef = ref(null)
const visaRef = ref(null)
const letterInfo = reactive(
{
name: null,
fileNumber: null,
deadline: null,
getday: null,
environment: 1
})
const letterRule = reactive({
name: { required: true, message: '姓名必填', trigger: 'blur' },
fileNumber: { required: true, message: '档案号必填', trigger: 'blur' },
environment: { type:"number",required: true, message: '环境必填', trigger: 'change' },
})
const visaInfo = reactive({
name: null,
file_number: null,
go_type: null,
pay_time: null,
deadline: null,
stay_month: null,
order_id: null,
environment: 1
})
const visaRule = reactive({
name: { required: true, message: '姓名必填', trigger: 'blur' },
file_number: { required: true, message: '档案号必填', trigger: 'blur' },
go_type: { required: true, message: '赴港证件类型必填', trigger: 'change' },
order_id: { required: true, message: '订单号必填', trigger: 'blur' },
environment: {type:"number",required: true, message: '环境必填', trigger: 'change' },
})
const pass = reactive([
{
name: "港澳通行证",
type: "passcard"
}, {
name: "护照",
type: "passport"
}
])
function resetletterInfo() {
Object.assign(letterInfo, {
name: null,
fileNumber: null,
deadline: null,
getday: null,
environment: 1
})
}
function resetVisaInfo() {
Object.assign(visaInfo, {
name: null,
file_number: null,
go_type: null,
pay_time: null,
deadline: null,
stay_month: null,
order_id: null,
environment: 1
})
}
watch(() => senType.value,
(newVal, oldval) => {
switch (newVal) {
case '获批':
Ty.title = '制作并发送获批信'
Ty.getday = '获批日期'
Ty.deadline = "缴费截至日期"
break
case '拒签':
Ty.title = '制作并发送拒签信'
Ty.getday = '拒签日期'
Ty.deadline = null
break
case '补件':
Ty.title = '制作并发送补件信'
Ty.getday = null
Ty.deadline = "补件日期"
break
default:
Ty.title = null
Ty.getday = null
break
}
})
const environment = reactive(
[{
type: "测试环境",
id: 1
}, {
type: "线上环境",
id: 2
}
]
)
function showMoadl(type) {
senType.value = type
modal.value = true
}
function closeShow() {
resetletterInfo()
modal.value = false
}
function closeShow2() {
resetVisaInfo()
modal2.value = false
}
function send() {
letterRef.value.validate((valid) => {
if (valid) {
letterButton.value=true
http('post', '/tool/makesendletter', { ...letterInfo, type: senType.value }, null, () => {
Message.success('发送成功');
letterButton.value=false
},()=>{
letterButton.value=false
})
} else {
this.$Message.error('请完善信息!');
}
})
}
function send2() {
visaRef.value.validate((valid) => {
if (valid) {
visaButton.value=true
http('post', '/tool/makesendvisa', visaInfo, null, () => {
Message.success('发送成功');
visaButton.value=false
},()=>{
visaButton.value=false
})
} else {
this.$Message.error('请完善信息!');
}
})
}
</script>
<style>
.vertical-center-modal {
display: flex;
align-items: center;
justify-content: center;
}
.vertical-center-modal .ivu-modal {
top: 0;
}
</style>
\ No newline at end of file
...@@ -12,6 +12,7 @@ module.exports = defineConfig({ ...@@ -12,6 +12,7 @@ module.exports = defineConfig({
} }
}, },
devServer: { devServer: {
historyApiFallback: true,
allowedHosts: "all", allowedHosts: "all",
proxy: { proxy: {
'/api': { '/api': {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment