handle-online-form.vue 5.5 KB

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