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> <!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 \ 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'; ...@@ -14,16 +14,18 @@ import TestReport from '@/views/tool/TestReport';
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';
import VueSocketio from 'vue-socket.io' // import VueSocketio from 'vue-socket.io'
import SocketIo from 'socket.io-client' import io from 'socket.io-client'
const app = createApp(App).use(store) const app = createApp(App).use(store)
import 'view-ui-plus/dist/styles/viewuiplus.css' 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.withCredentials = true
axios.defaults.baseURL = '/api' axios.defaults.baseURL = '/api'
app.config.globalProperties.$http = axios app.config.globalProperties.$http = axios
......
...@@ -6,23 +6,25 @@ ...@@ -6,23 +6,25 @@
<Input v-model="userinfo.name" placeholder="请输入用户名" style="max-width: 600px;"></Input> <Input v-model="userinfo.name" placeholder="请输入用户名" style="max-width: 600px;"></Input>
</FormItem> </FormItem>
<!-- v-if="$route.query.id == $store.state.id && $route.query.id" --> <!-- 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"> <FormItem v-if="elements.indexOf('4-3') == -1 && $route.query.id == $store.state.id && $route.query.id"
<Input v-model="userinfo.oldpassword" placeholder="请确认原密码" type="password" password label="原密码" prop="oldpassword">
<Input v-model="userinfo.oldpassword" placeholder="请确认原密码" type="password" password
style="max-width: 600px;"></Input> style="max-width: 600px;"></Input>
</FormItem> </FormItem>
<FormItem label="密码" prop="password"> <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>
<FormItem label="确认密码" prop="secondpassword"> <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> style="max-width: 600px;"></Input>
</FormItem> </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;"> <Select filterable v-model="userinfo.organization_id" style="max-width: 300px;">
<Option v-for="item in organization" :value="item.id">{{ item.path }}</Option> <Option v-for="item in organization" :value="item.id">{{ item.path }}</Option>
</Select> </Select>
</FormItem> </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;"> <Select filterable v-model="userinfo.role_id" style="max-width: 300px;">
<Option v-for="item in role" :value="item.id">{{ item.name }}</Option> <Option v-for="item in role" :value="item.id">{{ item.name }}</Option>
</Select> </Select>
...@@ -31,12 +33,16 @@ ...@@ -31,12 +33,16 @@
<Input v-model="userinfo.jira_account" placeholder="请输入jira账户" style="max-width: 600px;"></Input> <Input v-model="userinfo.jira_account" placeholder="请输入jira账户" style="max-width: 600px;"></Input>
</FormItem> </FormItem>
<FormItem label="jira密码" prop="jira_password"> <FormItem label="jira密码" prop="jira_password">
<Input v-model="userinfo.jira_password" placeholder="请输入jira账户密码" style="max-width: 600px;" <Input v-model="userinfo.jira_password" placeholder="请输入jira账户密码" style="max-width: 600px;" type="password"
type="password" password ></Input> password></Input>
</FormItem> </FormItem>
<FormItem label="email" prop="email"> <FormItem label="email" prop="email">
<Input v-model="userinfo.email_address" placeholder="请输入邮箱地址" style="max-width: 600px;"></Input> <Input v-model="userinfo.email_address" placeholder="请输入邮箱地址" style="max-width: 600px;"></Input>
</FormItem> </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;"> <FormItem style="text-align: left;">
<Button type="primary" @click="submit">提交</Button> <Button type="primary" @click="submit">提交</Button>
<Button style="margin-left: 8px" @click="cancle">取消</Button> <Button style="margin-left: 8px" @click="cancle">取消</Button>
...@@ -71,7 +77,7 @@ export default { ...@@ -71,7 +77,7 @@ export default {
}; };
// && this.$route.query.id && this.$route.query.id == this.$store.state.id // && this.$route.query.id && this.$route.query.id == this.$store.state.id
const validateOldPassCheck = (rule, value, callback) => { 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('请输入旧密码')); callback(new Error('请输入旧密码'));
} else callback() } else callback()
}; };
...@@ -81,8 +87,8 @@ export default { ...@@ -81,8 +87,8 @@ export default {
} else callback() } else callback()
}; };
return { return {
page_id:17, page_id: 17,
elements:[], elements: [],
userinfo: { userinfo: {
name: '', name: '',
password: '', password: '',
...@@ -92,7 +98,7 @@ export default { ...@@ -92,7 +98,7 @@ export default {
role_id: 0, role_id: 0,
jiar_account: '', jiar_account: '',
jiar_password: '', jiar_password: '',
email_address:'' email_address: ''
}, },
userValidate: { userValidate: {
name: [ name: [
...@@ -102,13 +108,13 @@ export default { ...@@ -102,13 +108,13 @@ export default {
{ validator: validateOldPassCheck, trigger: 'blur' } { validator: validateOldPassCheck, trigger: 'blur' }
], ],
password: [ password: [
{ validator: validatePass, trigger: 'blur' ,required: this.$route.query.id ? false : true} { validator: validatePass, trigger: 'blur', required: this.$route.query.id ? false : true }
], ],
secondpassword: [ 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: [ role_id: [
{ required: true, message: '请选择角色', trigger: 'change',type:'number' } { required: true, message: '请选择角色', trigger: 'change', type: 'number' }
], ],
email: [ email: [
{ type: 'email', message: '邮箱格式错误', trigger: 'blur' } { type: 'email', message: '邮箱格式错误', trigger: 'blur' }
...@@ -128,19 +134,19 @@ export default { ...@@ -128,19 +134,19 @@ export default {
} }
}, },
methods: { methods: {
async submit(){ async submit() {
var next_ = await this.$refs["userValidate"].validate((valid) => { var next_ = await this.$refs["userValidate"].validate((valid) => {
if (!valid) { if (!valid) {
this.$Message.error('请完善信息') this.$Message.error('请完善信息')
}; };
}) })
if (!next_) return if (!next_) return
'id' in this.userinfo?this.updateUser():this.addUser() 'id' in this.userinfo ? this.updateUser() : this.addUser()
}, },
cancle(){ cancle() {
setTimeout(() => { setTimeout(() => {
this.$router.back() this.$router.back()
}, 500); }, 500);
}, },
getOrg() { getOrg() {
this.$request("get", "/identity/organization_list", null, this, (data) => { console.info(data), this.organization = data.data }) this.$request("get", "/identity/organization_list", null, this, (data) => { console.info(data), this.organization = data.data })
...@@ -149,21 +155,21 @@ export default { ...@@ -149,21 +155,21 @@ export default {
this.$request("get", "/identity/role_list", null, this, (data) => { this.role = data.data }) this.$request("get", "/identity/role_list", null, this, (data) => { this.role = data.data })
}, },
getUser(id) { 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() { addUser() {
console.info(this.userinfo) 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() { updateUser() {
this.$request("post", "/user/updateuser", this.userinfo, this,()=>{this.cancle()}) this.$request("post", "/user/updateuser", this.userinfo, this, () => { this.cancle() })
} }
}, },
created() { created() {
this.getOrg(); this.getOrg();
this.getRole(); this.getRole();
this.$route.query.id && this.getUser(this.$route.query.id); 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> </script>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</div> </div>
</Upload> </Upload>
<div> <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">{{ <Option v-for="item in projects" :value="item.id" :key="item.id">{{
item.name }}</Option> item.name }}</Option>
</Select> </Select>
...@@ -93,11 +93,16 @@ export default { ...@@ -93,11 +93,16 @@ export default {
created() { created() {
this.getprojects(); this.getprojects();
this.getuploadhistory(); this.getuploadhistory();
this.$socket.connect();
console.info(this.$socket) 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() { destroyed() {
this.$socket.emitter.removeListener('infoupdate', this) this.$socket.off('infoupdate', this)
this.$socket.disconnect()
// this.$socket.emitter.removeListener('infoupdate', this)
}, },
watch: { watch: {
uploadhistory: { uploadhistory: {
...@@ -112,10 +117,10 @@ export default { ...@@ -112,10 +117,10 @@ export default {
}, },
runupload(newvalue, oldvalue) { runupload(newvalue, oldvalue) {
newvalue.forEach(ele => { 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 => { 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