NGTools/pagesPackage/ngTools_depart/add.vue
ldeyun 9dbfdc6c71 V1.0.0
微信小程序运行成功;
H5运行成功
2024-09-30 01:30:39 +08:00

198 lines
4.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="uni-container">
<uni-nav-bar dark :fixed="true" shadow background-color="#007AFF" status-bar left-icon="left" left-text="返回"
title="添加部门" @clickLeft="back" />
<uni-card>
<uni-forms ref="form" :model="formData" validate-trigger="submit" err-show-type="toast">
<!-- <uni-forms-item name="parent_id" label="父级部门ID">
<uni-easyinput placeholder="父级部门ID" v-model="formData.parent_id"></uni-easyinput>
</uni-forms-item> -->
<uni-forms-item name="父级部门" label="父级部门">
<depart-select @change="onselectionchange"></depart-select>
</uni-forms-item>
<uni-forms-item name="depart_name" label="部门名称">
<uni-easyinput placeholder="部门名称" v-model="formData.depart_name" trim="both"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="level" label="部门层级">
<uni-easyinput placeholder="部门层级,为提升检索效率而作的冗余设计" type="number"
v-model="formData.level"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="sort" label="显示顺序">
<uni-easyinput placeholder="部门在当前层级下的顺序,由小到大" type="number" v-model="formData.sort"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="manager_uid" label="部门主管用户">
<uni-easyinput placeholder="部门主管的userid 参考`uni-id-users` 表"
v-model="formData.manager_uid"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="status" label="部门状态">
<radio-group>
<radio :checked="true" @click="formData.status=0">正常</radio>
<radio :checked="false" @click="formData.status=1">禁用</radio>
</radio-group>
</uni-forms-item>
</uni-forms>
</uni-card>
<view class="uni-button-group">
<button type="primary" class="uni-button" @click="submit">提交</button>
</view>
</view>
</template>
<script>
import {
validator
} from '../../js_sdk/validator/ngTools_depart.js';
import {
getJsonTree,
groupBy
} from "@/js_sdk/util/jsonData";
import {
getDictItemStore,
getDepartStore,
saveDepartStore
} from '@/js_sdk/util/dictTools.js';
import departSelect from './depart_select.vue';
const db = uniCloud.database();
const dbCollectionName = 'ngTools_depart';
function getValidator(fields) {
let result = {}
for (let key in validator) {
if (fields.indexOf(key) > -1) {
result[key] = validator[key]
}
}
return result
}
export default {
components: {
departSelect
},
data() {
let formData = {
"parent_id": "",
"depart_name": "",
"level": null,
"sort": null,
"manager_uid": "",
"status": null
}
return {
formData,
parentID: "",
formOptions: {},
rules: {
...getValidator(Object.keys(formData))
}
}
},
onLoad(e) {
console.log(e)
},
onReady() {
this.$refs.form.setRules(this.rules)
},
methods: {
onselectionchange(selectDepartID) {
// console.log(selectDepartID)
this.parentID = selectDepartID;
// console.log(this.formData)
},
back() {
uni.navigateBack({
delta: 1
})
},
/**
* 验证表单并提交
*/
submit() {
uni.showLoading({
mask: true
})
this.$refs.form.validate().then((res) => {
res.parent_id = this.parentID;
return this.submitForm(res)
})
.catch(() => {
})
.finally(() => {
uni.hideLoading()
})
},
/**
* 提交表单
*/
submitForm(value) {
// 使用 clientDB 提交数据
return db.collection(dbCollectionName).add(value).then((res) => {
uni.showToast({
icon: 'none',
title: '新增成功'
})
this.getOpenerEventChannel().emit('refreshData')
setTimeout(() => {
console.log("s")
saveDepartStore();
console.log("e")
uni.navigateBack()
}, 500)
}).catch((err) => {
uni.showModal({
content: err.message + '请求服务失败',
showCancel: false
})
})
}
}
}
</script>
<style>
.uni-container {
padding: 0px;
}
.uni-input-border,
.uni-textarea-border {
width: 100%;
font-size: 14px;
color: #666;
border: 1px #e5e5e5 solid;
border-radius: 5px;
box-sizing: border-box;
}
.uni-input-border {
padding: 0 10px;
height: 35px;
}
.uni-textarea-border {
padding: 10px;
height: 80px;
}
.uni-button-group {
margin-top: 50px;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
justify-content: center;
}
.uni-button {
width: 184px;
}
</style>