BaseInfoDialog.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <!-- 添加或修改部门对话框 -->
  3. <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
  4. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  5. <el-row>
  6. <el-col :span="12">
  7. <el-form-item label="昵称" prop="nickname">
  8. <el-input v-model="form.nickname" placeholder="请输入昵称" maxlength="10" />
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="12">
  12. <el-form-item label="性别" prop="gender">
  13. <el-radio-group v-model="form.gender">
  14. <el-radio :label="1">男</el-radio>
  15. <el-radio :label="2">女</el-radio>
  16. </el-radio-group>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="12">
  20. <el-form-item label="身高" prop="height">
  21. <el-input v-model="form.height" placeholder="请输入身高">
  22. <template slot="suffix">cm</template>
  23. </el-input>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="12">
  27. <el-form-item label="体重" prop="weight">
  28. <el-input v-model="form.weight" placeholder="请输入体重">
  29. <template slot="suffix">kg</template>
  30. </el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="12">
  34. <el-form-item label="出生日期" prop="birthday">
  35. <el-date-picker size="small" v-model="form.birthday" type="date" placeholder="选择出生日期"
  36. value-format="yyyy-MM-dd" :picker-options="pickerOptions" style="width: 100%">
  37. </el-date-picker>
  38. </el-form-item>
  39. </el-col>
  40. </el-row>
  41. <el-row>
  42. <el-col :span="12">
  43. <el-form-item label="目标步数" prop="targetStep">
  44. <el-input-number v-model="form.targetStep" controls-position="right" :min="0" style="width: 100%" />
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="12">
  48. <el-form-item label="目标卡路里" prop="targetCalorie" label-width="100px">
  49. <el-input-number v-model="form.targetCalorie" controls-position="right" :min="0"
  50. style="width: calc(100% - 30px)" />
  51. <span style="padding-left: 5px">kal</span>
  52. </el-form-item>
  53. </el-col>
  54. </el-row>
  55. </el-form>
  56. <div slot="footer" class="dialog-footer">
  57. <el-button type="primary" @click="submitForm">确 定</el-button>
  58. <el-button @click="cancel">取 消</el-button>
  59. </div>
  60. </el-dialog>
  61. </template>
  62. <script>
  63. import { isNum, isNumber } from "@/utils/validate.js";
  64. import { setUserInfo } from "@/api/watch/deviceInfoSet.js";
  65. export default {
  66. data() {
  67. const checkIsNum = (rule, value, callback) => {
  68. if (!isNum(value) || value < 50) {
  69. callback(new Error("请输入正确的数字"));
  70. } else {
  71. callback();
  72. }
  73. };
  74. const checkIsNumber = (rule, value, callback) => {
  75. if (!isNumber(value) || value < 5) {
  76. callback(new Error("请输入正确的数字"));
  77. } else {
  78. callback();
  79. }
  80. };
  81. return {
  82. pickerOptions: {
  83. disabledDate(time) {
  84. return time.getTime() > Date.now()
  85. },
  86. },
  87. // 弹出层标题
  88. title: "",
  89. // 是否显示弹出层
  90. open: false,
  91. // 表单参数
  92. form: {},
  93. // 表单校验
  94. rules: {
  95. nickname: [
  96. {
  97. required: true,
  98. message: "昵称不能为空",
  99. trigger: ["blur", "change"],
  100. },
  101. ],
  102. gender: [{ required: true, message: "请选择性别", trigger: "change" }],
  103. height: [
  104. {
  105. required: true,
  106. message: "身高不能为空",
  107. trigger: ["blur", "change"],
  108. },
  109. { validator: checkIsNum, trigger: ["blur", "change"] },
  110. ],
  111. weight: [
  112. {
  113. required: true,
  114. message: "体重不能为空",
  115. trigger: ["blur", "change"],
  116. },
  117. { validator: checkIsNumber, trigger: ["blur", "change"] },
  118. ],
  119. birthday: [
  120. { required: true, message: "请选择出生日期", trigger: "change" },
  121. ],
  122. targetStep: [
  123. {
  124. required: true,
  125. message: "目标步数不能为空",
  126. trigger: ["blur", "change"],
  127. },
  128. ],
  129. targetCalorie: [
  130. {
  131. required: true,
  132. message: "目标卡路里不能为空",
  133. trigger: ["blur", "change"],
  134. },
  135. ],
  136. },
  137. };
  138. },
  139. methods: {
  140. // 取消按钮
  141. cancel() {
  142. this.open = false;
  143. this.reset();
  144. },
  145. // 表单重置
  146. reset() {
  147. this.form = {
  148. nickname: undefined,
  149. gender: undefined,
  150. height: undefined,
  151. weight: undefined,
  152. birthday: undefined,
  153. targetStep: undefined,
  154. targetCalorie: undefined
  155. };
  156. this.resetForm("form");
  157. },
  158. /** 修改按钮操作 */
  159. handleUpdate(row) {
  160. if (row == null) {
  161. this.reset();
  162. } else {
  163. this.form = { ...row };
  164. // 将性别字符串转换为相应的 el-radio 的 label 值
  165. if (row.gender === "男") {
  166. this.form.gender = 1;
  167. } else if (row.gender === "女") {
  168. this.form.gender = 2;
  169. }
  170. }
  171. // getDept(row.deptId).then((response) => {
  172. // this.form = response.data;
  173. this.open = true;
  174. this.title = "修改基本信息";
  175. // });
  176. // listDeptExcludeChild(row.deptId).then((response) => {
  177. // this.deptOptions = this.handleTree(response.data, "deptId");
  178. // });
  179. },
  180. /** 提交按钮 */
  181. submitForm() {
  182. this.$refs["form"].validate((valid) => {
  183. if (valid) {
  184. if (this.form.deviceId != undefined) {
  185. //下发用户设置到设备
  186. setUserInfo(this.form).then(Response => {
  187. this.open = false;
  188. })
  189. }
  190. }
  191. });
  192. },
  193. },
  194. };
  195. </script>
  196. <style lang="sass" scoped>
  197. </style>