handle-online-form.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <el-form
  3. v-loading="loading"
  4. ref="ruleForm"
  5. :model="ruleForm"
  6. status-icon
  7. :rules="rulesThis"
  8. :label-width="labelWidth || '110px'"
  9. class="demo-ruleForm-goodsOnline"
  10. :size="'mini'"
  11. >
  12. <el-row>
  13. <el-col :span="12"
  14. ><el-form-item label="审核状态" prop="state">
  15. <el-radio-group
  16. v-model="ruleForm.state"
  17. placeholder="请选择审核状态"
  18. style="width: 100%"
  19. :size="size || 'medium'"
  20. @change="stateChange"
  21. >
  22. <el-radio v-for="item in stateList" :key="item.value" :label="item.value">{{
  23. item.label
  24. }}</el-radio>
  25. </el-radio-group>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="12" class="tr">
  29. <el-form-item label="审核备注" v-if="ruleForm.state === '0'" prop="remark">
  30. <el-input
  31. type="textarea"
  32. placeholder="审核备注"
  33. v-model="ruleForm.remark"
  34. :disabled="disabled"
  35. maxlength="250"
  36. show-word-limit
  37. :autosize="{ minRows: 3, maxRows: 3 }"
  38. />
  39. </el-form-item>
  40. <el-form-item class="fr" v-if="ruleForm.state === '1'">
  41. <el-button :size="'mini'" type="primary" @click="submitForm('6')"
  42. >保 存
  43. </el-button>
  44. </el-form-item>
  45. <el-form-item class="fr" v-if="ruleForm.state === '0'">
  46. <el-button :size="'mini'" type="primary" @click="submitForm('')"
  47. >驳回重新审核
  48. </el-button>
  49. </el-form-item>
  50. <!-- <el-form-item class="fr" v-if="ruleForm.state === '0'" >
  51. <el-button
  52. :size="'mini'"
  53. type="danger"
  54. @click="submitForm('8')"
  55. >驳回并下线
  56. </el-button>
  57. </el-form-item> -->
  58. </el-col>
  59. <el-col :span="24" v-if="ruleForm.state === '1'"
  60. ><el-form-item label="平台商品编码" prop="plat_code">
  61. <el-input
  62. v-model="ruleForm.plat_code"
  63. placeholder="平台商品编码"
  64. maxlength="100"
  65. ></el-input>
  66. </el-form-item>
  67. </el-col>
  68. </el-row>
  69. </el-form>
  70. </template>
  71. <script>
  72. import costFormAddEdit from "./costFormAddEdit";
  73. import asyncRequest from "@/apis/service/goodStore/goodsOnline";
  74. import { isnumber, isAlphanumeric, validAlphabets } from "@/utils/validate";
  75. export default {
  76. name: "exam-form",
  77. props: ["size", "statusList", "disabled", "isMust", "labelWidth", "id", "code"],
  78. components: {
  79. costFormAddEdit,
  80. },
  81. /**
  82. * 属性集合
  83. * @param {String} size : 组件大小 非必填
  84. * @param {Array} statusList : 驳回至备选项 必填
  85. * @param {Boolean} disabled : 是否禁用 必填
  86. * @param {Boolean} isMust : 是否需要展示驳回节点 必填
  87. *
  88. *
  89. */
  90. /**
  91. * 事件集合
  92. * @searchChange : 选中值变化调用 抛出选中数据
  93. */
  94. data() {
  95. const validate_plat_code = (rule, value, callback) => {
  96. if (value === "") {
  97. callback(new Error("平台商品编号不能为空!"));
  98. } else {
  99. if (isnumber(value)) {
  100. callback();
  101. } else if (validAlphabets(value)) {
  102. callback();
  103. } else if (isAlphanumeric(value)) {
  104. callback();
  105. } else {
  106. callback("平台商品编号仅支持数字和字母!");
  107. }
  108. }
  109. };
  110. return {
  111. stateList: [
  112. {
  113. value: "1",
  114. label: "通过",
  115. },
  116. {
  117. value: "0",
  118. label: "驳回",
  119. },
  120. ],
  121. loading: false,
  122. showModelThis: this.showModel,
  123. pickerOptions: {
  124. disabledDate(time) {
  125. return time.getTime() < Date.now() - 60 * 60 * 24 * 1000;
  126. },
  127. },
  128. ruleForm: {
  129. state: "1", // 通过or驳回
  130. remark: "",
  131. plat_code: "",
  132. },
  133. rulesThis: this.rules,
  134. rules: {
  135. plat_code: [
  136. {
  137. required: true,
  138. validator: validate_plat_code,
  139. trigger: "blur",
  140. },
  141. ],
  142. state: [
  143. {
  144. required: true,
  145. message: "请选择审核状态",
  146. trigger: "change",
  147. },
  148. ],
  149. remark: [
  150. { required: true, message: "请输入审核备注", trigger: "blur" },
  151. {
  152. min: 1,
  153. max: 250,
  154. message: "长度在 1 到 250 个字符",
  155. trigger: "blur",
  156. },
  157. ],
  158. },
  159. };
  160. },
  161. newTime: function (val) {
  162. if (val) {
  163. this.initForm();
  164. }
  165. },
  166. mounted() {
  167. this.initForm();
  168. },
  169. methods: {
  170. async initForm() {
  171. this.loading = true;
  172. this.rulesThis = this.rules;
  173. await this.resetForm();
  174. this.loading = false;
  175. },
  176. async resetForm() {
  177. // 重置
  178. await this.$nextTick(() => {
  179. if (this.$refs.ruleForm) {
  180. this.$refs.ruleForm.resetFields();
  181. this.$refs.ruleForm.clearValidate();
  182. this.ruleForm = {
  183. plat_code: this.code || "",
  184. state: "1", // 通过or驳回
  185. remark: "",
  186. };
  187. }
  188. });
  189. },
  190. async submitForm(numStatus) {
  191. this.ruleForm.numStatus = numStatus;
  192. await this.$refs.ruleForm.validate(async (valid) => {
  193. if (valid) {
  194. let model = JSON.parse(JSON.stringify(this.ruleForm));
  195. // 刷新
  196. this.$emit("resSuccess", model);
  197. // this.routeReGoto("goodsOnline", {});
  198. } else {
  199. console.log("error submit!!");
  200. return false;
  201. }
  202. });
  203. },
  204. },
  205. };
  206. </script>
  207. <style lang="scss" scoped>
  208. .demo-ruleForm-goodsOnline {
  209. .shangchuan-ul {
  210. li {
  211. position: relative;
  212. width: 100%;
  213. &.tupian {
  214. }
  215. }
  216. }
  217. }
  218. </style>