You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

301 lines
11 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <template>
  2. <section>
  3. <el-row class="app-container">
  4. <el-row class="app-container">
  5. <el-tag type="warning">您不在任何一个公司或者部门中您可以 创建新公司 或者 申请加入已有公司</el-tag>
  6. </el-row>
  7. <el-row class="app-container">
  8. <el-radio v-model="addOrJoinBranch" label="add" >创建新公司</el-radio><el-radio v-model="addOrJoinBranch" label="join" ></el-radio>
  9. </el-row>
  10. <!--新增界面 Branch 管理端机构表机构下面若干部门-->
  11. <el-form :model="addForm" v-show="addOrJoinBranch=='add'" label-width="100px" :rules="addFormRules" ref="addForm">
  12. <el-form-item label="公司名称" prop="branchName">
  13. <el-input v-model="addForm.branchName" auto-complete="off">
  14. <el-button slot="append" round type="primary" plain @click="checkBranchExists">查询机构是否存在</el-button>
  15. </el-input>
  16. </el-form-item>
  17. <el-form-item label="行业分类" prop="industryCategory">
  18. <el-select
  19. v-model="addForm.industryCategory"
  20. filterable
  21. allow-create
  22. default-first-option
  23. placeholder="请选择行业,如果没有合适的可以自己添加">
  24. <el-option
  25. v-for="item in options.industryCategory"
  26. :key="item.optionValue"
  27. :label="item.optionName"
  28. :value="item.optionValue">
  29. </el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="联系人姓名" prop="cusername">
  33. <el-input v-model="addForm.cusername" auto-complete="off"></el-input>
  34. </el-form-item>
  35. <el-form-item label="联系电话" prop="phoneNo">
  36. <el-input v-model="addForm.phoneNo" auto-complete="off"></el-input>
  37. </el-form-item>
  38. <el-form-item label="邮件" prop="emaill">
  39. <el-input v-model="addForm.emaill" auto-complete="off"></el-input>
  40. </el-form-item>
  41. <el-form-item>
  42. <el-button @click.native="handleCancel">取消</el-button>
  43. <el-button v-loading="load.add" type="primary" round @click.native="addSubmit" >创建新公司</el-button>
  44. </el-form-item>
  45. </el-form>
  46. <!--新增界面 Branch 管理端机构表机构下面若干部门-->
  47. <el-form :model="joinForm" v-show="addOrJoinBranch=='join'" label-width="100px" :rules="joinFormRules" ref="joinForm">
  48. <el-form-item label="公司查询" prop="joinBranchId">
  49. <el-select
  50. v-model="joinForm.joinBranchId"
  51. filterable
  52. remote
  53. clearable
  54. placeholder="请输入2个关键词查询"
  55. :remote-method="searchBranchs"
  56. value-key="id"
  57. :loading="load.list">
  58. <el-option
  59. v-for="item in branchs"
  60. :key="item.id"
  61. :label="item.branchName"
  62. :value="item.id">
  63. </el-option>
  64. </el-select>
  65. <el-tag>选择已有公司-申请加入</el-tag>
  66. </el-form-item>
  67. <el-form-item label="加入理由" prop="joinReason">
  68. <el-input type="textarea" rows="4" v-model="joinForm.joinReason" auto-complete="off"></el-input>
  69. </el-form-item>
  70. <el-form-item label="联系人姓名" prop="joinUsername" >
  71. <el-input v-model="joinForm.joinUsername" auto-complete="off"></el-input>
  72. </el-form-item>
  73. <el-form-item label="联系电话" prop="joinUserPhoneno" >
  74. <el-input v-model="joinForm.joinUserPhoneno" auto-complete="off"></el-input>
  75. </el-form-item>
  76. <el-form-item>
  77. <el-button @click.native="handleCancel">取消</el-button>
  78. <el-button v-loading="load.add" type="warning" round @click.native="joinBranch" >加入公司</el-button>
  79. </el-form-item>
  80. </el-form>
  81. </el-row>
  82. </section>
  83. </template>
  84. <script>
  85. import util from '@/common/js/util';//全局公共库
  86. import { listOption } from '@/api/itemOption';//下拉框数据查询
  87. import { addBranchNoAuth,listBranchNoAuth,addUserJoinBranchRequire } from '@/api/branch';
  88. import { mapGetters } from 'vuex'
  89. export default {
  90. props:['branch','visible'],
  91. watch: {
  92. 'branch':function( branch ) {
  93. this.addForm = branch;
  94. },
  95. 'visible':function(visible) {
  96. if(visible==true){
  97. //从新打开页面时某些数据需要重新加载,可以在这里添加
  98. }
  99. }
  100. },
  101. data() {
  102. const validateBranchName = (rule, value, callback) => {
  103. if( !value || value.length<=6){
  104. callback(new Error('请输入6位以上公司名称'))
  105. }else{
  106. callback()
  107. }
  108. }
  109. const validatePhoneNo = (rule, value, callback) => {
  110. if( !value || value.length !=11 ){
  111. callback(new Error('手机号码必须为11位号码'))
  112. }else{
  113. callback()
  114. }
  115. }
  116. const validateCusername = (rule, value, callback) => {
  117. if( !value || value.length <2 ){
  118. callback(new Error('请输入联系人名称'))
  119. }else{
  120. callback()
  121. }
  122. }
  123. return {
  124. options:{},//下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]}
  125. load:{ list: false, edit: false, del: false, add: false },//查询中...
  126. addFormRules: {
  127. branchName: [{ required: true, trigger: 'blur', validator: validateBranchName }],
  128. cusername: [{ required: true, trigger: 'blur', validator: validateCusername }],
  129. phoneNo: [{ required: true, trigger: 'blur', validator: validatePhoneNo }],
  130. },
  131. //新增界面数据 管理端机构表(机构下面若干部门)
  132. addForm: {
  133. id:'',branchName:'',enabled:'',industryCategory:'',cuserid:'',cdate:'',cusername:'',phoneNo:'',emaill:''
  134. },
  135. joinFormRules: {
  136. //branchName: [{ required: true, trigger: 'blur', validator: validateBranchName }],
  137. joinUsername: [{ required: true, trigger: 'blur', validator: validateCusername }],
  138. joinUserPhoneno: [{ required: true, trigger: 'blur', validator: validatePhoneNo }],
  139. joinBranchId:[{ required: true, message: '要加入的公司不能为空', trigger: 'blur' }],
  140. joinReason:[{ required: true, message: '加入理由不能为空', trigger: 'blur' }],
  141. },
  142. //新增界面数据 管理端机构表(机构下面若干部门)
  143. joinForm: {
  144. id:'',joinBranchId:'',joinUserPhoneno:'',joinUserid:'',joinUsername:'',joinDeptid:'',joinReason:''
  145. },
  146. branchs:[],
  147. addOrJoinBranch:'join'
  148. /**begin 在下面加自定义属性,记得补上面的一个逗号**/
  149. /**end 在上面加自定义属性**/
  150. }//end return
  151. },//end data
  152. methods: {
  153. // 取消按钮点击 父组件监听@cancel="addFormVisible=false" 监听
  154. handleCancel:function(){
  155. this.$emit('cancel');
  156. },
  157. //新增提交Branch 管理端机构表(机构下面若干部门) 父组件监听@submit="afterAddSubmit"
  158. addSubmit: function () {
  159. this.$refs.addForm.validate((valid) => {
  160. if (valid) {
  161. this.$confirm('确认提交吗?', '提示', {}).then(() => {
  162. if(this.addForm.branchName.length>=6){
  163. var params={
  164. key:"%"+this.addForm.branchName+"%"
  165. }
  166. listBranchNoAuth(params).then(res=>{
  167. if(res.data.tips.isOk){
  168. if(res.data.data.length<=0){
  169. this.load.add=true
  170. let params = Object.assign({}, this.addForm);
  171. params.cuserid=this.userInfo.userid
  172. addBranchNoAuth(params).then((res) => {
  173. this.load.add=false
  174. var tips=res.data.tips;
  175. if(tips.isOk){
  176. this.$emit('submit',res.data.data );// @submit="afterAddSubmit"
  177. }
  178. this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
  179. }).catch(() => this.load.add=false);
  180. }else{
  181. this.$message({ message: "该公司名已注册,不可以使用", type: 'error' });
  182. return;
  183. }
  184. }
  185. })
  186. }else{
  187. this.$message({ message: "公司名必须6个字以上", type: 'error' });
  188. return;
  189. }
  190. });
  191. }
  192. });
  193. },
  194. searchBranchs:function(query){
  195. this.load.list=true;
  196. if(query.length>=2){
  197. var params={
  198. key:"%"+query+"%"
  199. }
  200. listBranchNoAuth(params).then(res=>{
  201. this.load.list=false;
  202. if(res.data.tips.isOk){
  203. if(res.data.data.length>=0){
  204. this.branchs=res.data.data;
  205. return;
  206. }else{
  207. this.branchs=[]
  208. return;
  209. }
  210. }
  211. })
  212. }else{
  213. this.load.list=false;
  214. this.$message({ message: "最少输入两个字", type: 'info' });
  215. return;
  216. }
  217. },
  218. joinBranch:function(){
  219. this.$refs.joinForm.validate((valid) => {
  220. if (valid) {
  221. this.$confirm('确认提交吗?', '提示', {}).then(() => {
  222. var params= this.joinForm
  223. addUserJoinBranchRequire(params).then(res=>{
  224. var tips = res.data.tips;
  225. if(tips.isOk){
  226. this.$message({ message:tips.msg, type: 'success' });
  227. //this.$emit('submit',res.data.data );// @submit="afterAddSubmit"
  228. return;
  229. }else{
  230. this.$message({ message: tips.msg, type: 'error' });
  231. return;
  232. }
  233. })
  234. });
  235. }
  236. });
  237. },
  238. checkBranchExists:function(){
  239. if(this.addForm.branchName.length>=2){
  240. var params={
  241. key:"%"+this.addForm.branchName+"%"
  242. }
  243. listBranchNoAuth(params).then(res=>{
  244. if(res.data.tips.isOk){
  245. if(res.data.data.length<=0){
  246. this.$message({ message: "该公司名未注册,可以使用", type: 'success' });
  247. return;
  248. }else{
  249. this.$message({ message: "该公司名已注册,不可以使用", type: 'error' });
  250. return;
  251. }
  252. }
  253. })
  254. }else{
  255. this.$message({ message: "最少输入两个字", type: 'error' });
  256. return;
  257. }
  258. }
  259. /**begin 在下面加自定义方法,记得补上面的一个逗号**/
  260. /**end 在上面加自定义方法**/
  261. },//end method
  262. components: {
  263. //在下面添加其它组件 'branch-edit':BranchEdit
  264. },
  265. computed: {
  266. ...mapGetters([
  267. 'myBranchs','myDepts','userInfo'
  268. ])
  269. },
  270. mounted() {
  271. this.addForm=Object.assign(this.addForm, this.branch);
  272. this.addForm.cusername=this.userInfo.username
  273. this.addForm.phoneNo=this.userInfo.phoneno;
  274. this.addForm.cuserid=this.userInfo.userid;
  275. this.addForm.emaill=this.userInfo.email;
  276. this.joinForm.joinUsername=this.userInfo.username
  277. this.joinForm.joinReason="员工申请加入公司";
  278. this.joinForm.joinUserid=this.userInfo.userid;
  279. this.joinForm.joinUserPhoneno=this.userInfo.phoneno;
  280. this.load.list=true
  281. listOption([{categoryId:'all',itemCode:'industryCategory'}]).then(res=>{
  282. this.load.list=false
  283. this.options=res.data.data
  284. }).catch(()=>this.load.list=false);
  285. }//end mounted
  286. }
  287. </script>
  288. <style scoped>
  289. </style>