recruitInformationInfo-detail.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <template>
  2. <el-dialog
  3. :visible.sync="showDialog"
  4. :title="title"
  5. :modal-append-to-body="false"
  6. style="text-align: left;"
  7. @close="closeDialog"
  8. :close-on-click-modal="false"
  9. width="900px"
  10. >
  11. <div class="user-panel" v-loading="loading">
  12. <el-form
  13. ref="form"
  14. :model="formModel"
  15. :rules="ruleValidate"
  16. :label-width="'100px'"
  17. :inline="true"
  18. >
  19. <el-form-item label="选择企业" prop="enterpriseId">
  20. <el-select
  21. filterable
  22. v-model="formModel.enterpriseId"
  23. placeholder="请选择"
  24. style="width: 300px"
  25. clearable
  26. >
  27. <el-option
  28. v-for="item in enterpriseList"
  29. :key="item.id"
  30. :label="item.name"
  31. :value="item.id"
  32. ></el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="行业" prop="industry">
  36. <el-select v-model="formModel.industry" filterable placeholder="请选择" style="width: 300px" clearable>
  37. <el-option
  38. v-for="result in intendedIndustriesList"
  39. :key="result.id"
  40. :label="result.name"
  41. :value="result.value"
  42. ></el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="职位名称" prop="positionName">
  46. <el-input v-model="formModel.positionName" placeholder="请输入职位名称" style="width: 300px"></el-input>
  47. </el-form-item>
  48. <el-form-item label="结算方式" prop="settlementMethod">
  49. <el-select v-model="formModel.settlementMethod" @change="handChange" style="width: 300px" filterable placeholder="请选择" clearable>
  50. <el-option
  51. v-for="result in methodList"
  52. :key="result.id"
  53. :label="result.name"
  54. :value="result.value"
  55. ></el-option>
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item label="薪资待遇" prop="salary">
  59. <el-input v-model="formModel.salary" placeholder="请输入薪资待遇" style="width: 300px">
  60. <template slot="append">{{unit}}</template>
  61. </el-input>
  62. </el-form-item>
  63. <el-form-item label="招聘人数" prop="recruitingNumbers">
  64. <el-input-number v-model="formModel.recruitingNumbers" :min="0" label="招聘人数" style="width: 300px"></el-input-number>
  65. </el-form-item>
  66. <el-form-item label="年龄要求" prop="ageRequirement">
  67. <el-input v-model="formModel.ageRequirement" placeholder="请输入年龄要求" style="width: 300px"></el-input>
  68. </el-form-item>
  69. <el-form-item label="工作描述" prop="desc">
  70. <el-input
  71. style="width: 710px"
  72. type="textarea"
  73. :rows="3"
  74. placeholder="请输入内容"
  75. v-model="formModel.desc">
  76. </el-input>
  77. </el-form-item>
  78. <el-form-item label="联系人" prop="contacts">
  79. <el-input v-model="formModel.contacts" placeholder="请输入联系人" style="width: 300px"></el-input>
  80. </el-form-item>
  81. <el-form-item label="联系电话" prop="contactsPhone">
  82. <el-input v-model="formModel.contactsPhone" placeholder="请输入联系电话" style="width: 300px"></el-input>
  83. </el-form-item>
  84. <el-form-item label="工作地区" prop="workArea">
  85. <el-input v-model="formModel.workArea" placeholder="请输入工作地区" style="width: 300px"></el-input>
  86. </el-form-item>
  87. <el-form-item label="详细地址" prop="address">
  88. <el-input v-model="formModel.address" placeholder="请输入详细地址" style="width: 300px"></el-input>
  89. </el-form-item>
  90. </el-form>
  91. </div>
  92. <span slot="footer" class="dialog-footer">
  93. <el-button @click="closeDialog">取 消</el-button>
  94. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  95. >确 定</el-button
  96. >
  97. </span>
  98. </el-dialog>
  99. </template>
  100. <script>
  101. import recruitInformationInfoApi from "@/api/base/recruitInformationInfo";
  102. import dataDictionaryApi from "@/api/sys/dataDictionary";
  103. import enterpriseInfoApi from "@/api/base/enterpriseInfo";
  104. export default {
  105. props: ["businessKey", "title"],
  106. data() {
  107. return {
  108. showPwd: true,
  109. ruleValidate: {
  110. enterpriseId: [
  111. { required: true, message: "请选择企业", trigger: "blur" },
  112. ],
  113. industry: [
  114. { required: true, message: "行业不能为空", trigger: "blur" },
  115. ],
  116. positionName: [
  117. { required: true, message: "职位名称不能为空", trigger: "blur" },
  118. ],
  119. salary: [
  120. { required: true, message: "薪资待遇不能为空", trigger: "blur" },
  121. ],
  122. settlementMethod: [
  123. { required: true, message: "结算方式不能为空", trigger: "blur" },
  124. ],
  125. recruitingNumbers: [
  126. { required: true, message: "招聘人数不能为空", trigger: "blur" },
  127. ],
  128. desc: [
  129. { required: true, message: "工作描述不能为空", trigger: "blur" },
  130. ],
  131. contacts: [
  132. { required: true, message: "联系人不能为空", trigger: "blur" },
  133. ],
  134. contactsPhone: [
  135. { required: true, message: "联系电话不能为空", trigger: "blur" },
  136. ],
  137. workArea: [
  138. { required: true, message: "工作地区不能为空", trigger: "blur" },
  139. ],
  140. address: [
  141. { required: true, message: "详细地址不能为空", trigger: "blur" },
  142. ],
  143. },
  144. roleList: [],
  145. formModel: {},
  146. showDialog: true,
  147. loading: false,
  148. submitting: false,
  149. intendedIndustriesList:[],
  150. methodList:[],
  151. enterpriseList:[],
  152. unit:"",
  153. };
  154. },
  155. created() {
  156. var self = this;
  157. dataDictionaryApi.findByCatalogName({catalogName: "意向行业",})
  158. .then((response) => {
  159. var jsonData = response.data;
  160. self.intendedIndustriesList = jsonData.data;
  161. });
  162. dataDictionaryApi.findByCatalogName({catalogName: "结算方式",})
  163. .then((response) => {
  164. var jsonData = response.data;
  165. self.methodList = jsonData.data;
  166. });
  167. enterpriseInfoApi.list().then(function (response) {
  168. var jsonData = response.data;
  169. if (jsonData.result) {
  170. if (jsonData.data != null && jsonData.data != "") {
  171. self.enterpriseList = jsonData.data;
  172. }
  173. }
  174. });
  175. },
  176. methods: {
  177. closeDialog() {
  178. this.$emit("close", false);
  179. },
  180. handleSubmit() {
  181. var self = this;
  182. this.$refs["form"].validate((valid) => {
  183. if (valid) {
  184. (function () {
  185. var id = self.formModel.id;
  186. if (id == null || id.length == 0) {
  187. return recruitInformationInfoApi.add(self.formModel);
  188. } else {
  189. return recruitInformationInfoApi.update(self.formModel);
  190. }
  191. })().then(function (response) {
  192. var jsonData = response.data;
  193. if (jsonData.result) {
  194. self.$message({
  195. message: "保存成功!",
  196. type: "success",
  197. });
  198. self.$emit("close", true);
  199. } else {
  200. self.$message({
  201. message: jsonData.message + "",
  202. type: "warning",
  203. });
  204. self.$emit("close", false);
  205. }
  206. });
  207. }
  208. });
  209. },
  210. handChange(val){
  211. if(val=="1"){
  212. this.unit="元/日"
  213. }
  214. else if(val=="2"){
  215. this.unit="元/周"
  216. }
  217. else if(val=="3"){
  218. this.unit="元/月"
  219. }
  220. }
  221. },
  222. async mounted() {
  223. var self = this;
  224. self.loading = true;
  225. (function () {
  226. if (self.businessKey != null && self.businessKey.length > 0) {
  227. return recruitInformationInfoApi.edit(self.businessKey);
  228. } else {
  229. return recruitInformationInfoApi.create();
  230. }
  231. })()
  232. .then((response) => {
  233. var jsonData = response.data;
  234. if (jsonData.result) {
  235. self.formModel = jsonData.data;
  236. let licenseImage = self.formModel.licenseImage;
  237. if (licenseImage != null) {
  238. self.fileUrl = licenseImage
  239. }
  240. self.showModal = true;
  241. } else {
  242. self.$message.error(jsonData.message + "");
  243. }
  244. self.loading = false;
  245. })
  246. .catch((error) => {
  247. self.$message.error(error + "");
  248. self.loading = false;
  249. });
  250. },
  251. components: {
  252. },
  253. };
  254. </script>
  255. <style scoped>
  256. .user-panel {
  257. margin: 10px auto;
  258. }
  259. </style>