purchase_check.vue 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <template>
  2. <el-form
  3. ref="ruleForm"
  4. :loading="loading"
  5. :model="ruleForm"
  6. status-icon
  7. :rules="rulesThis"
  8. label-width="100px"
  9. style="width: 100%"
  10. class="demo-ruleForm"
  11. >
  12. <el-row>
  13. <el-col :span="12">
  14. <el-form-item label="退回仓库" prop="return_store">
  15. <el-select
  16. style="width: 100%"
  17. v-model="ruleForm.return_value"
  18. placeholder="请选择退回仓库"
  19. @change="handleStore"
  20. >
  21. <el-option
  22. v-for="item in return_store_options"
  23. :key="item.value"
  24. :label="item.label"
  25. :value="item.value"
  26. >
  27. </el-option>
  28. </el-select>
  29. </el-form-item>
  30. </el-col>
  31. </el-row>
  32. <el-row>
  33. <el-row>
  34. <el-col :span="12">
  35. <el-form-item label="退回地址" prop="return_goods_addr">
  36. <select-area
  37. :placeholder="'请选择省/市/区'"
  38. :value="ruleForm.return_goods_addr"
  39. :is-detail="id !== 'add'"
  40. @selectChange="selectAreaAddr_code"
  41. />
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="12">
  45. <el-form-item label="详细地址" prop="addr_detail">
  46. <el-input
  47. v-model="ruleForm.addr_detail"
  48. placeholder="请输入退货详细地址"
  49. ></el-input>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="12">
  53. <el-form-item label="收件人" prop="addressee">
  54. <el-input
  55. v-model="ruleForm.addressee"
  56. placeholder="请输入收件人"
  57. ></el-input>
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="12">
  61. <el-form-item label="收件人电话" prop="addressee_phone">
  62. <el-input
  63. v-model="ruleForm.addressee_phone"
  64. placeholder="请输入收件人电话"
  65. ></el-input>
  66. </el-form-item>
  67. </el-col>
  68. </el-row>
  69. <el-col :span="24" style="text-align: right">
  70. <el-button type="primary" @click="submitForm" v-if="true"
  71. >保 存</el-button
  72. >
  73. <!-- id === 'add' ||
  74. (status === '0' && powers.some((item) => item == '005')) -->
  75. <el-button
  76. type="primary"
  77. @click="statusConfirm('1', '发起审核流程')"
  78. v-if="status === '0' && powers.some((item) => item == '012')"
  79. >发起审核流程
  80. </el-button>
  81. <el-button
  82. @click="statusConfirm('0', '取消审核流程')"
  83. plain
  84. v-if="status === '1' && powers.some((item) => item == '014')"
  85. >取消审核流程</el-button
  86. >
  87. <el-button
  88. @click="statusConfirm('-1', '作废该条信息')"
  89. type="danger"
  90. plain
  91. v-if="
  92. (status === '0' || status === '1') &&
  93. powers.some((item) => item == '015')
  94. "
  95. >作废该条信息</el-button
  96. >
  97. <el-button
  98. @click="statusConfirm('2', '通过审核')"
  99. type="primary"
  100. v-if="status === '1' && powers.some((item) => item == '016')"
  101. >通过审核</el-button
  102. >
  103. </el-col>
  104. </el-row>
  105. </el-form>
  106. </template>
  107. <script>
  108. import { isMobile } from "@/utils/validate.js";
  109. import asyncRequest from "@/apis/service/sellOut/sellAfterApply";
  110. import resToken from "@/mixins/resToken";
  111. import { isnumber } from "@/utils/validate.js";
  112. export default {
  113. name: "purchase_check",
  114. props: ["id", "showModelThis", "newTime"],
  115. mixins: [resToken],
  116. data() {
  117. const validatemobile = (rule, value, callback) => {
  118. if (value === "") {
  119. callback(new Error("手机号不能为空!"));
  120. } else {
  121. if (!isMobile(value)) {
  122. callback(new Error("手机号格式不正确!"));
  123. } else {
  124. callback();
  125. }
  126. }
  127. };
  128. return {
  129. loading: false,
  130. status: "", //存储详情接口返的状态
  131. showModelThis: this.showModel,
  132. resign_name: "", //离职人
  133. hand_name: "", //交接人
  134. ruleForm: {
  135. return_store: "", //退回仓库
  136. return_goods_addr: [], //退货地址
  137. addr_detail: "", //退货详细地址
  138. addressee: "", //收件人
  139. addressee_phone: "", //收件人电话
  140. express_require: "", //物流要求
  141. },
  142. rulesThis: this.rules,
  143. // 验证规则
  144. rules: {
  145. return_store: [
  146. {
  147. required: true,
  148. trigger: "change",
  149. message: "请选择退回仓库",
  150. },
  151. ],
  152. addressee: [
  153. {
  154. required: true,
  155. message: "请输入收件人",
  156. trigger: "blur",
  157. },
  158. ],
  159. return_goods_addr: [
  160. {
  161. type: "array",
  162. required: true,
  163. message: "请选择退回地址所在省/市/区",
  164. trigger: "change",
  165. },
  166. ],
  167. addr_detail: [
  168. {
  169. required: true,
  170. message: "请输入详细退货地址",
  171. trigger: "blur",
  172. },
  173. ],
  174. addressee: [
  175. {
  176. required: true,
  177. message: "请输入收件人",
  178. trigger: "blur",
  179. },
  180. ],
  181. addressee_phone: [
  182. {
  183. required: true,
  184. trigger: "blur",
  185. validator: validatemobile,
  186. },
  187. ],
  188. express_require: [
  189. {
  190. required: true,
  191. trigger: "blur",
  192. message: "请输入物流信息",
  193. },
  194. ],
  195. },
  196. return_store_options: [
  197. {
  198. value: "value1",
  199. label: "供应商仓库",
  200. return_goods_addr: ["110000", "110100", "110101"],
  201. addr_detail: "三河道",
  202. addressee: "张三",
  203. addressee_phone: "13223223230",
  204. },
  205. {
  206. value: "value2",
  207. label: "自建仓/部门仓1",
  208. },
  209. {
  210. value: "value3",
  211. label: "自建仓/部门仓2",
  212. },
  213. {
  214. value: "value4",
  215. label: "自建仓/部门仓3",
  216. },
  217. ],
  218. return_value: "", //退回仓库
  219. };
  220. },
  221. computed: {
  222. powers() {
  223. let tran =
  224. this.$store.getters.btnList.find(
  225. (item) => item.menu_route == "purchase_check"
  226. ) || {};
  227. if (tran && tran.action && tran.action.length > 0) {
  228. return tran.action;
  229. } else {
  230. return [];
  231. }
  232. },
  233. },
  234. mounted() {
  235. this.initForm();
  236. },
  237. watch: {
  238. id: function (val) {
  239. if (val) {
  240. this.initForm();
  241. }
  242. },
  243. newTime: function (val) {
  244. if (val) {
  245. this.initForm();
  246. }
  247. },
  248. },
  249. methods: {
  250. // 关闭弹窗,直接隐藏表单
  251. // async closeAddEdit() {
  252. // this.$emit("closeModel", false); //抛出一个事件,关闭弹窗
  253. //
  254. // },
  255. closeAdd() {
  256. this.showModelThis = false;
  257. },
  258. async initForm() {
  259. this.loading = true;
  260. if (this.id === "add") {
  261. this.status = "";
  262. this.rulesThis = this.rules;
  263. await this.resetForm();
  264. } else {
  265. this.rulesThis = this.rules;
  266. await this.resetForm();
  267. // await this.initData();
  268. }
  269. this.loading = false;
  270. },
  271. async resetForm() {
  272. this.resign_name = "";
  273. this.hand_name = "";
  274. this.status = "";
  275. // 重置
  276. await this.$nextTick(() => {
  277. if (this.$refs.ruleForm) {
  278. this.$refs.ruleForm.resetFields();
  279. this.$refs.ruleForm.clearValidate();
  280. this.ruleForm = {
  281. return_store: "", //退回仓库
  282. return_goods_addr: [], //退货地址
  283. addr_detail: "", //退货详细地址
  284. addressee: "", //收件人
  285. addressee_phone: "", //收件人电话
  286. express_require: "", //物流要求
  287. };
  288. }
  289. });
  290. },
  291. async submitForm() {
  292. await this.$refs.ruleForm.validate(async (valid) => {
  293. if (valid) {
  294. this.loading = true;
  295. const model = {
  296. id: this.id,
  297. resign_uid: rUid,
  298. hand_uid: hUid,
  299. };
  300. let res = {};
  301. if (this.id === "add") {
  302. delete model["id"];
  303. res = await asyncRequest.add(model);
  304. } else {
  305. res = await asyncRequest.update(model);
  306. }
  307. this.loading = false;
  308. if (res && res.code === 0) {
  309. const title = this.id === "add" ? "添加成功!" : "修改成功!";
  310. this.$notify.success({
  311. title,
  312. message: "",
  313. });
  314. if (this.id === "add") {
  315. this.showModelThis = false;
  316. this.$emit("refresh", false);
  317. } else {
  318. this.initForm();
  319. }
  320. } else if (res && res.code >= 100 && res.code <= 104) {
  321. await this.logout();
  322. } else {
  323. this.$message.warning(res.message);
  324. }
  325. } else {
  326. console.log("error submit!!");
  327. return false;
  328. }
  329. });
  330. },
  331. handleStore(e) {
  332. this.return_store_options.find((item) => {
  333. if (item.value === e) {
  334. this.ruleForm.return_goods_addr = item.return_goods_addr;
  335. this.ruleForm.addr_detail = item.addr_detail;
  336. this.ruleForm.addressee = item.addressee;
  337. this.ruleForm.addressee_phone = item.addressee_phone;
  338. this.$refs.ruleForm.validateField("addressee");
  339. this.$refs.ruleForm.validateField("return_goods_addr");
  340. this.$refs.ruleForm.validateField("addr_detail");
  341. this.$refs.ruleForm.validateField("addressee_phone");
  342. }
  343. });
  344. this.ruleForm.return_store = e;
  345. },
  346. //退货省市区
  347. selectAreaAddr_code(e) {
  348. console.log(e);
  349. this.ruleForm.return_goods_addr = e;
  350. console.log(this.ruleForm);
  351. this.$refs.ruleForm.validateField("return_goods_addr");
  352. },
  353. },
  354. };
  355. </script>
  356. <style lang="scss" scoped>
  357. </style>