打卡小程序后端代码
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.

167 lines
5.7 KiB

7 months ago
7 months ago
  1. <template>
  2. <a-spin :spinning="confirmLoading">
  3. <j-form-container :disabled="formDisabled">
  4. <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5. <a-row>
  6. <a-col :span="24">
  7. <a-form-model-item label="项目名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
  8. <a-input v-model="model.name" placeholder="请输入项目名" ></a-input>
  9. </a-form-model-item>
  10. </a-col>
  11. <a-col :span="24">
  12. <a-form-model-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
  13. <j-image-upload isMultiple v-model="model.pic" ></j-image-upload>
  14. </a-form-model-item>
  15. </a-col>
  16. <a-col :span="24">
  17. <a-form-model-item label="打卡地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address">
  18. <a-input v-model="model.address" placeholder="请输入打卡地址" ></a-input>
  19. </a-form-model-item>
  20. </a-col>
  21. <a-col :span="24">
  22. <a-form-model-item label="时区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="timeZone">
  23. <j-dict-select-tag type="list" v-model="model.timeZone" dictCode="clock_in_time_zone,name,id,del_flag=0" placeholder="请选择时区" />
  24. </a-form-model-item>
  25. </a-col>
  26. <a-col :span="24">
  27. <a-form-model-item label="经度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lon">
  28. <a-input v-model="model.lon" placeholder="请输入经度" ></a-input>
  29. </a-form-model-item>
  30. </a-col>
  31. <a-col :span="24">
  32. <a-form-model-item label="纬度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lat">
  33. <a-input v-model="model.lat" placeholder="请输入纬度" ></a-input>
  34. </a-form-model-item>
  35. </a-col>
  36. <a-col :span="24">
  37. <a-form-model-item label="地图选择位置" :labelCol="labelCol" :wrapperCol="wrapperCol" >
  38. <TencentMapPicker
  39. :latitude="model.lat"
  40. :longitude="model.lon"
  41. @onLocationSelected="handleLocationSelected"
  42. />
  43. </a-form-model-item>
  44. </a-col>
  45. <a-col :span="24">
  46. <a-form-model-item label="打卡距离(单位米)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="distance">
  47. <a-input v-model="model.distance" placeholder="请输入打卡距离(单位米)" />
  48. </a-form-model-item>
  49. </a-col>
  50. <a-col :span="24">
  51. <a-form-model-item label="团队编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teamId">
  52. <j-dict-select-tag type="list" v-model="model.teamId" dictCode="clockin_team,name,id,del_flag=0" placeholder="请选择团队编号" />
  53. </a-form-model-item>
  54. </a-col>
  55. <!-- <a-col :span="24">-->
  56. <!-- <a-form-model-item label="是否删除" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag">-->
  57. <!-- <j-dict-select-tag type="radio" v-model="model.delFlag" dictCode="is_delete" placeholder="请选择是否删除" />-->
  58. <!-- </a-form-model-item>-->
  59. <!-- </a-col>-->
  60. </a-row>
  61. </a-form-model>
  62. </j-form-container>
  63. </a-spin>
  64. </template>
  65. <script>
  66. import { httpAction, getAction } from '@/api/manage'
  67. import { validateDuplicateValue } from '@/utils/util'
  68. import TencentMapPicker from './TencentMapPicker.vue';
  69. export default {
  70. name: 'ClockInProjectForm',
  71. components: {
  72. TencentMapPicker
  73. },
  74. props: {
  75. //表单禁用
  76. disabled: {
  77. type: Boolean,
  78. default: false,
  79. required: false
  80. }
  81. },
  82. data () {
  83. return {
  84. model:{
  85. delFlag:0,
  86. lon: '',
  87. lat: ''
  88. },
  89. labelCol: {
  90. xs: { span: 24 },
  91. sm: { span: 5 },
  92. },
  93. wrapperCol: {
  94. xs: { span: 24 },
  95. sm: { span: 16 },
  96. },
  97. confirmLoading: false,
  98. validatorRules: {
  99. },
  100. url: {
  101. add: "/clockInproject/clockInProject/add",
  102. edit: "/clockInproject/clockInProject/edit",
  103. queryById: "/clockInproject/clockInProject/queryById"
  104. }
  105. }
  106. },
  107. computed: {
  108. formDisabled(){
  109. return this.disabled
  110. },
  111. },
  112. created () {
  113. //备份model原始值
  114. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  115. },
  116. methods: {
  117. handleLocationSelected({latitude, longitude}) {
  118. console.log('event',latitude, longitude)
  119. this.model.lat = latitude;
  120. this.model.lon = longitude;
  121. },
  122. add () {
  123. this.edit(this.modelDefault);
  124. },
  125. edit (record) {
  126. this.model = Object.assign({}, record);
  127. this.visible = true;
  128. },
  129. selLocation(location){
  130. console.log(location)
  131. },
  132. submitForm () {
  133. const that = this;
  134. // 触发表单验证
  135. this.$refs.form.validate(valid => {
  136. if (valid) {
  137. that.confirmLoading = true;
  138. let httpurl = '';
  139. let method = '';
  140. if(!this.model.id){
  141. httpurl+=this.url.add;
  142. method = 'post';
  143. }else{
  144. httpurl+=this.url.edit;
  145. method = 'put';
  146. }
  147. httpAction(httpurl,this.model,method).then((res)=>{
  148. if(res.success){
  149. that.$message.success(res.message);
  150. that.$emit('ok');
  151. }else{
  152. that.$message.warning(res.message);
  153. }
  154. }).finally(() => {
  155. that.confirmLoading = false;
  156. })
  157. }
  158. })
  159. },
  160. }
  161. }
  162. </script>