PositionModal.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. :footer="null"
  8. @cancel="handleCancel">
  9. <a-spin :spinning="confirmLoading">
  10. <a-form :form="form">
  11. <a-form-item
  12. :labelCol="labelCol"
  13. :wrapperCol="wrapperCol"
  14. label="职位名称">
  15. <a-input placeholder="" v-decorator="['positionName', validatorRules.positionName ]" :readOnly="!!model.id" />
  16. </a-form-item>
  17. <a-form-item
  18. :labelCol="labelCol"
  19. :wrapperCol="wrapperCol"
  20. label="职位描述">
  21. <a-textarea :rows="5" placeholder="" v-decorator="[ 'positionDetail', {} ]" :readOnly="!!model.id" />
  22. </a-form-item>
  23. <a-form-item
  24. :labelCol="labelCol"
  25. :wrapperCol="wrapperCol"
  26. label="招聘人数">
  27. <a-input v-decorator="[ 'recruitNumber', {}]" :readOnly="!!model.id" />
  28. </a-form-item>
  29. <a-form-item
  30. :labelCol="labelCol"
  31. :wrapperCol="wrapperCol"
  32. label="基础薪资">
  33. <j-dict-select-tag :triggerChange="true" dictCode="basic_salary" v-decorator="[ 'basicSalary', {}]" :readOnly="!!model.id" >
  34. </j-dict-select-tag> </a-form-item>
  35. <a-form-item
  36. :labelCol="labelCol"
  37. :wrapperCol="wrapperCol"
  38. label="备注">
  39. <a-input v-decorator="[ 'otherSalary', {}]" :readOnly="!!model.id" />
  40. </a-form-item>
  41. <a-form-item
  42. :labelCol="labelCol"
  43. :wrapperCol="wrapperCol"
  44. label="岗位福利">
  45. <j-multi-select-tag dictCode="welfare" v-decorator="[ 'welfare', {}]"/>
  46. <!--<j-dict-select-tag :triggerChange="true" dictCode="welfare" v-decorator="[ 'welfare', {}]" :readOnly="!!model.id">-->
  47. <!--</j-dict-select-tag>-->
  48. </a-form-item>
  49. <a-form-item
  50. :labelCol="labelCol"
  51. :wrapperCol="wrapperCol"
  52. label="结算方式">
  53. <j-dict-select-tag :triggerChange="true" dictCode="settlement_method" v-decorator="[ 'settlementMethod', {}]" :readOnly="!!model.id" >
  54. </j-dict-select-tag> </a-form-item>
  55. <a-form-item
  56. :labelCol="labelCol"
  57. :wrapperCol="wrapperCol"
  58. label="是否需要打工团队">
  59. <j-dict-select-tag :triggerChange="true" dictCode="require_group" v-decorator="[ 'requireGroup', {}]" :readOnly="!!model.id" >
  60. </j-dict-select-tag> </a-form-item>
  61. <a-form-item
  62. :labelCol="labelCol"
  63. :wrapperCol="wrapperCol"
  64. label="工作日期">
  65. <a-input placeholder="" v-decorator="['workDate', validatorRules.workDate ]" :readOnly="!!model.id" />
  66. </a-form-item>
  67. <a-form-item label="工作时段" :labelCol="{span: 5}" :wrapperCol="{span: 16, offset: 0}">
  68. <a-input v-decorator="[ 'startWorkTime', {}]" :readOnly="!!model.id" />
  69. <span style="width: 10px;">~</span>
  70. <a-input v-decorator="[ 'endWordTime', {}]" :readOnly="!!model.id" />
  71. </a-form-item>
  72. <a-form-item
  73. :labelCol="labelCol"
  74. :wrapperCol="wrapperCol"
  75. label="学历要求">
  76. <j-dict-select-tag :triggerChange="true" dictCode="qualification" v-decorator="[ 'qualification', {}]" :readOnly="!!model.id">
  77. </j-dict-select-tag>
  78. </a-form-item>
  79. <a-form-item
  80. :labelCol="labelCol"
  81. :wrapperCol="wrapperCol"
  82. label="性别要求">
  83. <j-dict-select-tag :triggerChange="true" dictCode=" gender" v-decorator="[ 'gender', {}]" :readOnly="!!model.id">
  84. </j-dict-select-tag>
  85. </a-form-item>
  86. <a-form-item
  87. :labelCol="labelCol"
  88. :wrapperCol="wrapperCol"
  89. label="截止时间">
  90. <a-date-picker showTime format='YYYY-MM-DD HH:mm:ss' v-decorator="[ 'endDate', {}]" :readOnly="!!model.id"/>
  91. </a-form-item>
  92. <a-form-item
  93. :labelCol="labelCol"
  94. :wrapperCol="wrapperCol"
  95. label="联系人">
  96. <a-input placeholder="" v-decorator="['contactPerson', {}]" :readOnly="!!model.id"/>
  97. </a-form-item>
  98. <a-form-item
  99. :labelCol="labelCol"
  100. :wrapperCol="wrapperCol"
  101. label="联系电话">
  102. <a-input placeholder="" v-decorator="['contactPhone', {}]" :readOnly="!!model.id"/>
  103. </a-form-item>
  104. </a-form>
  105. </a-spin>
  106. </a-modal>
  107. </template>
  108. <script>
  109. import { httpAction } from '@/api/manage'
  110. import pick from 'lodash.pick'
  111. import moment from "moment"
  112. import JMultiSelectTag from '../../../components/dict/JMultiSelectTag'
  113. export default {
  114. name: "PositionModal",
  115. components: { JMultiSelectTag },
  116. data () {
  117. return {
  118. title:"操作",
  119. visible: false,
  120. model: {},
  121. labelCol: {
  122. xs: { span: 24 },
  123. sm: { span: 5 },
  124. },
  125. wrapperCol: {
  126. xs: { span: 24 },
  127. sm: { span: 16 },
  128. },
  129. confirmLoading: false,
  130. form: this.$form.createForm(this),
  131. validatorRules:{
  132. userId:{rules: [{ required: true, message: '请输入用户!' }]},
  133. positionName:{rules: [{ required: true, message: '请输入岗位标题!' }]},
  134. enterpriseName:{rules: [{ required: true, message: '请输入所属公司!' }]},
  135. positionDetail:{rules: [{ required: true, message: '请输入职位描述!' }]},
  136. positionCategory:{rules: [{ required: true, message: '请输入职位类型(0:全职 1:兼职)!' }]},
  137. fulltimePositionType:{rules: [{ required: true, message: '请输入全职职位类别(0:服务员 1:校园活动 2:实习 3:调研 4:送餐员 5:导购 6:网络编辑 7:普工 8:设计 9:文员助理 10:派单 11:销售 12:安保 13:礼仪 14:促销 15:翻译 16:客服 17:演出 18:家教导师 19:模特 20:快递分拣 21:厨师 22:物流仓储 23:贸易采购 24:技工 25:保洁 26:才艺技能 27:其它)!' }]},
  138. parttimePositionType:{rules: [{ required: true, message: '请输入兼职职位类别(0:文员助理 1:市场推广 2:家教培训 3:餐饮服务 4:促销导购 5:物流仓储 6:展会演出 7:才艺技能 8:客服话务 9:代驾司机 10:app试玩 11:线上推广 12:编辑 13:模特 14:技工 15:保洁 16:其它)!' }]},
  139. delFlag:{rules: [{ required: true, message: '请输入是否删除(0:上架 1:下架)!' }]},
  140. },
  141. url: {
  142. add: "/hpposition/position/add",
  143. edit: "/hpposition/position/edit",
  144. },
  145. }
  146. },
  147. created () {
  148. },
  149. methods: {
  150. add () {
  151. this.edit({});
  152. },
  153. edit (record) {
  154. this.form.resetFields();
  155. this.model = Object.assign({}, record);
  156. this.visible = true;
  157. this.$nextTick(() => {
  158. this.form.setFieldsValue(pick(this.model,'userId','positionName','enterpriseName','positionDetail','positionCategory','fulltimePositionType','parttimePositionType','recruitNumber','salary','otherSalary','salaryStructure','hasRegularBus','ageRange','workExperience','isHealthCertification','workDate','startWorkTime','endWordTime','isPublishNationwide','contactPerson','contactPhone','isPause','delFlag'))
  159. //时间格式化
  160. this.form.setFieldsValue({endDate:this.model.endDate?moment(this.model.endDate):null})
  161. this.form.setFieldsValue({basicSalary:String(this.model.basicSalary)})
  162. this.form.setFieldsValue({welfare:String(this.model.welfare)})
  163. this.form.setFieldsValue({qualification:String(this.model.qualification)})
  164. this.form.setFieldsValue({gender:String(this.model.gender)})
  165. this.form.setFieldsValue({salaryPeriod:String(this.model.salaryPeriod)})
  166. this.form.setFieldsValue({settlementMethod:String(this.model.settlementMethod)})
  167. this.form.setFieldsValue({recruitNumber:this.model.recruitNumber?this.model.recruitNumber:"若干"})
  168. this.form.setFieldsValue({requireGroup:this.model.requireGroup?String(this.model.requireGroup):""})
  169. });
  170. },
  171. close () {
  172. this.$emit('close');
  173. this.visible = false;
  174. },
  175. handleOk () {
  176. const that = this;
  177. // 触发表单验证
  178. this.form.validateFields((err, values) => {
  179. if (!err) {
  180. that.confirmLoading = true;
  181. let httpurl = '';
  182. let method = '';
  183. if(!this.model.id){
  184. httpurl+=this.url.add;
  185. method = 'post';
  186. }else{
  187. httpurl+=this.url.edit;
  188. method = 'put';
  189. }
  190. let formData = Object.assign(this.model, values);
  191. //时间格式化
  192. formData.endDate = formData.endDate?formData.endDate.format('YYYY-MM-DD HH:mm:ss'):null;
  193. console.log(formData)
  194. httpAction(httpurl,formData,method).then((res)=>{
  195. if(res.success){
  196. that.$message.success(res.message);
  197. that.$emit('ok');
  198. }else{
  199. that.$message.warning(res.message);
  200. }
  201. }).finally(() => {
  202. that.confirmLoading = false;
  203. that.close();
  204. })
  205. }
  206. })
  207. },
  208. handleCancel () {
  209. this.close()
  210. },
  211. }
  212. }
  213. </script>
  214. <style lang="less" scoped>
  215. </style>