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

用户新增邮件密码配置

parent 94ef59c1
<!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="icon" href="/favicon.ico"><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.5670e6ea.js"></script><script defer="defer" src="/js/app.f45a3349.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.3954dbdf.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
<!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="icon" href="/favicon.ico"><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.822ae491.js"></script><script defer="defer" src="/js/app.63d37ec0.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.3954dbdf.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
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -14,16 +14,18 @@ import TestReport from '@/views/tool/TestReport';
import Echarts from "vue-echarts";
import 'echarts';
import ViewUIPlus from 'view-ui-plus';
import VueSocketio from 'vue-socket.io'
import SocketIo from 'socket.io-client'
// import VueSocketio from 'vue-socket.io'
import io from 'socket.io-client'
const app = createApp(App).use(store)
import 'view-ui-plus/dist/styles/viewuiplus.css'
const socket = new VueSocketio({ connection: SocketIo('ws://127.0.0.1') })
// const socket = new VueSocketio({ connection: SocketIo('ws://127.0.0.1') })
const socket = io('ws://127.0.0.1')
axios.defaults.withCredentials = true
axios.defaults.baseURL = '/api'
app.config.globalProperties.$http = axios
......
......@@ -6,23 +6,25 @@
<Input v-model="userinfo.name" placeholder="请输入用户名" style="max-width: 600px;"></Input>
</FormItem>
<!-- v-if="$route.query.id == $store.state.id && $route.query.id" -->
<FormItem v-if="elements.indexOf('4-3')==-1 && $route.query.id == $store.state.id && $route.query.id" label="原密码" prop="oldpassword">
<Input v-model="userinfo.oldpassword" placeholder="请确认原密码" type="password" password
<FormItem v-if="elements.indexOf('4-3') == -1 && $route.query.id == $store.state.id && $route.query.id"
label="原密码" prop="oldpassword">
<Input v-model="userinfo.oldpassword" placeholder="请确认原密码" type="password" password
style="max-width: 600px;"></Input>
</FormItem>
<FormItem label="密码" prop="password">
<Input v-model="userinfo.password" placeholder="请输入密码" type="password" password style="max-width: 600px;"></Input>
<Input v-model="userinfo.password" placeholder="请输入密码" type="password" password
style="max-width: 600px;"></Input>
</FormItem>
<FormItem label="确认密码" prop="secondpassword">
<Input v-model="userinfo.secondpassword" placeholder="请再次输入密码" type="password" password
<Input v-model="userinfo.secondpassword" placeholder="请再次输入密码" type="password" password
style="max-width: 600px;"></Input>
</FormItem>
<FormItem v-if="elements.indexOf('4-3')!=-1" name="组织更改" label="组织">
<FormItem v-if="elements.indexOf('4-3') != -1" name="组织更改" label="组织">
<Select filterable v-model="userinfo.organization_id" style="max-width: 300px;">
<Option v-for="item in organization" :value="item.id">{{ item.path }}</Option>
</Select>
</FormItem>
<FormItem v-if="elements.indexOf('4-3')!=-1" name="角色更改" label="角色" prop="role_id">
<FormItem v-if="elements.indexOf('4-3') != -1" name="角色更改" label="角色" prop="role_id">
<Select filterable v-model="userinfo.role_id" style="max-width: 300px;">
<Option v-for="item in role" :value="item.id">{{ item.name }}</Option>
</Select>
......@@ -31,12 +33,16 @@
<Input v-model="userinfo.jira_account" placeholder="请输入jira账户" style="max-width: 600px;"></Input>
</FormItem>
<FormItem label="jira密码" prop="jira_password">
<Input v-model="userinfo.jira_password" placeholder="请输入jira账户密码" style="max-width: 600px;"
type="password" password ></Input>
<Input v-model="userinfo.jira_password" placeholder="请输入jira账户密码" style="max-width: 600px;" type="password"
password></Input>
</FormItem>
<FormItem label="email" prop="email">
<Input v-model="userinfo.email_address" placeholder="请输入邮箱地址" style="max-width: 600px;"></Input>
</FormItem>
<FormItem label="邮箱密码" prop="email_password">
<Input v-model="userinfo.email_password" placeholder="请输入邮箱密码" type="password" password
style="max-width: 600px;"></Input>
</FormItem>
<FormItem style="text-align: left;">
<Button type="primary" @click="submit">提交</Button>
<Button style="margin-left: 8px" @click="cancle">取消</Button>
......@@ -71,7 +77,7 @@ export default {
};
// && this.$route.query.id && this.$route.query.id == this.$store.state.id
const validateOldPassCheck = (rule, value, callback) => {
if (value === '' && this.userinfo.password && this.$route.query.id == this.$store.state.id && this.$route.query.id) {
if (value === '' && this.userinfo.password && this.$route.query.id == this.$store.state.id && this.$route.query.id) {
callback(new Error('请输入旧密码'));
} else callback()
};
......@@ -81,8 +87,8 @@ export default {
} else callback()
};
return {
page_id:17,
elements:[],
page_id: 17,
elements: [],
userinfo: {
name: '',
password: '',
......@@ -92,7 +98,7 @@ export default {
role_id: 0,
jiar_account: '',
jiar_password: '',
email_address:''
email_address: ''
},
userValidate: {
name: [
......@@ -102,13 +108,13 @@ export default {
{ validator: validateOldPassCheck, trigger: 'blur' }
],
password: [
{ validator: validatePass, trigger: 'blur' ,required: this.$route.query.id ? false : true}
{ validator: validatePass, trigger: 'blur', required: this.$route.query.id ? false : true }
],
secondpassword: [
{ validator: validatePassCheck, trigger: 'blur' ,required: this.$route.query.id ? false : true}
{ validator: validatePassCheck, trigger: 'blur', required: this.$route.query.id ? false : true }
],
role_id: [
{ required: true, message: '请选择角色', trigger: 'change',type:'number' }
{ required: true, message: '请选择角色', trigger: 'change', type: 'number' }
],
email: [
{ type: 'email', message: '邮箱格式错误', trigger: 'blur' }
......@@ -128,19 +134,19 @@ export default {
}
},
methods: {
async submit(){
async submit() {
var next_ = await this.$refs["userValidate"].validate((valid) => {
if (!valid) {
this.$Message.error('请完善信息')
};
})
if (!next_) return
'id' in this.userinfo?this.updateUser():this.addUser()
'id' in this.userinfo ? this.updateUser() : this.addUser()
},
cancle(){
cancle() {
setTimeout(() => {
this.$router.back()
}, 500);
}, 500);
},
getOrg() {
this.$request("get", "/identity/organization_list", null, this, (data) => { console.info(data), this.organization = data.data })
......@@ -149,21 +155,21 @@ export default {
this.$request("get", "/identity/role_list", null, this, (data) => { this.role = data.data })
},
getUser(id) {
this.$request("get", "/user/getuser/"+id, null, this, (data) => { this.userinfo = data.data })
this.$request("get", "/user/getuser/" + id, null, this, (data) => { this.userinfo = data.data })
},
addUser() {
console.info(this.userinfo)
this.$request("post", "/user/adduser",this.userinfo, this,()=>{this.cancle()})
this.$request("post", "/user/adduser", this.userinfo, this, () => { this.cancle() })
},
updateUser() {
this.$request("post", "/user/updateuser", this.userinfo, this,()=>{this.cancle()})
this.$request("post", "/user/updateuser", this.userinfo, this, () => { this.cancle() })
}
},
created() {
this.getOrg();
this.getRole();
this.$route.query.id && this.getUser(this.$route.query.id);
this.$getElements(this.page_id,this,(data)=>this.elements=data.data)
this.$getElements(this.page_id, this, (data) => this.elements = data.data)
}
}
</script>
......@@ -10,7 +10,7 @@
</div>
</Upload>
<div>
<Select filterable v-model="project" style="width:200px" placeholder="项目" @on-change="getiterations">
<Select filterable v-model="project" style="width:200px" placeholder="项目">
<Option v-for="item in projects" :value="item.id" :key="item.id">{{
item.name }}</Option>
</Select>
......@@ -93,11 +93,16 @@ export default {
created() {
this.getprojects();
this.getuploadhistory();
this.$socket.connect();
console.info(this.$socket)
this.$socket.emitter.addListener('infoupdate', () => { this.getuploadhistory() }, this)
this.$socket.on('infoupdate', () => { this.getuploadhistory(); console.info("更新了") })
// this.$socket.emitter.addListener('infoupdate', () => { this.getuploadhistory() }, this)
},
destroyed() {
this.$socket.emitter.removeListener('infoupdate', this)
this.$socket.off('infoupdate', this)
this.$socket.disconnect()
// this.$socket.emitter.removeListener('infoupdate', this)
},
watch: {
uploadhistory: {
......@@ -112,10 +117,10 @@ export default {
},
runupload(newvalue, oldvalue) {
newvalue.forEach(ele => {
if (!oldvalue.includes(ele)) this.$socket.io.emit("join", ele)
if (!oldvalue.includes(ele)) this.$socket.emit("join", ele)
})
oldvalue.forEach(ele => {
if (!oldvalue.includes(ele)) this.$socket.io.emit("leave", ele)
if (!oldvalue.includes(ele)) this.$socket.emit("leave", ele)
})
}
}
......
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