1380280f667590c36863f94f5b964cbe162b22c8.svn-base 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="800"
  5. :ok=false
  6. :visible="visible"
  7. :confirmLoading="confirmLoading"
  8. :okButtonProps="{ props: {disabled: disableSubmit} }"
  9. @ok="handleOk"
  10. @cancel="handleCancel"
  11. cancelText="关闭">
  12. <a-spin :spinning="confirmLoading">
  13. <a-form-model ref="form" :model="model" :rules="validatorRules">
  14. <a-form-model-item
  15. :labelCol="labelCol"
  16. :wrapperCol="wrapperCol"
  17. label="机构名称"
  18. prop="departName"
  19. :hidden="false"
  20. hasFeedback >
  21. <a-input id="departName" placeholder="请输入机构/部门名称" v-model="model.departName"/>
  22. </a-form-model-item>
  23. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" :hidden="seen" label="上级部门" hasFeedback>
  24. <a-tree-select
  25. style="width:100%"
  26. :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
  27. :treeData="departTree"
  28. v-model="model.parentId"
  29. placeholder="请选择上级部门"
  30. :disabled="condition">
  31. </a-tree-select>
  32. </a-form-model-item>
  33. <a-form-model-item
  34. :labelCol="labelCol"
  35. :wrapperCol="wrapperCol"
  36. label="机构类型">
  37. <template v-if="seen">
  38. <a-radio-group v-model="model.orgCategory" placeholder="请选择机构类型">
  39. <a-radio value="1">
  40. 公司
  41. </a-radio>
  42. </a-radio-group>
  43. </template>
  44. <template v-else>
  45. <a-radio-group v-model="model.orgCategory" placeholder="请选择机构类型">
  46. <a-radio value="2">
  47. 部门
  48. </a-radio>
  49. <a-radio value="3">
  50. 岗位
  51. </a-radio>
  52. </a-radio-group>
  53. </template>
  54. </a-form-model-item>
  55. <a-form-model-item
  56. :labelCol="labelCol"
  57. :wrapperCol="wrapperCol"
  58. prop="mobile"
  59. label="电话">
  60. <a-input placeholder="请输入电话" v-model="model.mobile"/>
  61. </a-form-model-item>
  62. <a-form-model-item
  63. :labelCol="labelCol"
  64. :wrapperCol="wrapperCol"
  65. label="传真">
  66. <a-input placeholder="请输入传真" v-model="model.fax"/>
  67. </a-form-model-item>
  68. <a-form-model-item
  69. :labelCol="labelCol"
  70. :wrapperCol="wrapperCol"
  71. label="地址">
  72. <a-input placeholder="请输入地址" v-model="model.address"/>
  73. </a-form-model-item>
  74. <a-form-model-item
  75. :labelCol="labelCol"
  76. :wrapperCol="wrapperCol"
  77. label="排序">
  78. <a-input v-model="model.departOrder"/>
  79. </a-form-model-item>
  80. <a-form-model-item
  81. :labelCol="labelCol"
  82. :wrapperCol="wrapperCol"
  83. label="备注">
  84. <a-textarea placeholder="请输入备注" v-model="model.memo"/>
  85. </a-form-model-item>
  86. </a-form-model>
  87. </a-spin>
  88. </a-modal>
  89. </template>
  90. <script>
  91. import { httpAction } from '@/api/manage'
  92. import { queryIdTree } from '@/api/api'
  93. import pick from 'lodash.pick'
  94. import ATextarea from 'ant-design-vue/es/input/TextArea'
  95. export default {
  96. name: "SysDepartModal",
  97. components: { ATextarea },
  98. data () {
  99. return {
  100. departTree:[],
  101. orgTypeData:[],
  102. phoneWarning:'',
  103. departName:"",
  104. title:"操作",
  105. seen:false,
  106. visible: false,
  107. condition:true,
  108. disableSubmit:false,
  109. model: {},
  110. defaultModel:{
  111. departOrder:0,
  112. orgCategory:'1'
  113. },
  114. menuhidden:false,
  115. menuusing:true,
  116. labelCol: {
  117. xs: { span: 24 },
  118. sm: { span: 5 },
  119. },
  120. wrapperCol: {
  121. xs: { span: 24 },
  122. sm: { span: 16 },
  123. },
  124. confirmLoading: false,
  125. validatorRules:{
  126. departName:[{ required: true, message: '请输入机构/部门名称!' }],
  127. orgCode:[{ required: true, message: '请输入机构编码!' }],
  128. mobile: [{validator:this.validateMobile}],
  129. orgCategory:[{required: true, message: '请输入机构类型!'}]
  130. },
  131. url: {
  132. add: "/sys/sysDepart/add",
  133. },
  134. dictDisabled:true,
  135. }
  136. },
  137. created () {
  138. },
  139. methods: {
  140. loadTreeData(){
  141. var that = this;
  142. queryIdTree().then((res)=>{
  143. if(res.success){
  144. that.departTree = [];
  145. for (let i = 0; i < res.result.length; i++) {
  146. let temp = res.result[i];
  147. that.departTree.push(temp);
  148. }
  149. }
  150. })
  151. },
  152. add (depart) {
  153. if(depart){
  154. this.seen = false;
  155. this.dictDisabled = false;
  156. }else{
  157. this.seen = true;
  158. this.dictDisabled = true;
  159. }
  160. this.edit(depart);
  161. },
  162. edit (record) {
  163. this.visible = true;
  164. this.model = Object.assign({}, this.defaultModel, record)
  165. this.loadTreeData();
  166. this.model.parentId = record!=null?record.toString():null;
  167. if(this.seen){
  168. this.model.orgCategory = '1';
  169. }else{
  170. this.model.orgCategory = '2';
  171. }
  172. },
  173. close () {
  174. this.$emit('close');
  175. this.disableSubmit = false;
  176. this.visible = false;
  177. this.$refs.form.resetFields();
  178. },
  179. handleOk () {
  180. const that = this;
  181. // 触发表单验证
  182. this.$refs.form.validate(valid => {
  183. if (valid) {
  184. that.confirmLoading = true;
  185. httpAction(this.url.add,this.model,"post").then((res)=>{
  186. if(res.success){
  187. that.$message.success(res.message);
  188. that.loadTreeData();
  189. that.$emit('ok');
  190. }else{
  191. that.$message.warning(res.message);
  192. }
  193. }).finally(() => {
  194. that.confirmLoading = false;
  195. that.close();
  196. })
  197. }else{
  198. return false;
  199. }
  200. })
  201. },
  202. handleCancel () {
  203. this.close()
  204. },
  205. validateMobile(rule,value,callback){
  206. if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)){
  207. callback();
  208. }else{
  209. callback("您的手机号码格式不正确!");
  210. }
  211. }
  212. }
  213. }
  214. </script>
  215. <style scoped>
  216. </style>