猫妈狗爸伴宠师小程序后端代码
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.

412 lines
13 KiB

4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form">
  4. <el-form-item label="支付时间" prop="payTime">
  5. <el-date-picker
  6. clearable
  7. size="small"
  8. v-model="queryParams.payTime"
  9. type="datetime"
  10. value-format="yyyy-MM-dd HH:mm:ss"
  11. placeholder="选择支付时间">
  12. </el-date-picker>
  13. </el-form-item>
  14. <el-form-item label="本单酬劳" prop="price">
  15. <el-input
  16. v-model="queryParams.price"
  17. placeholder="请输入本单酬劳"
  18. clearable
  19. size="small"
  20. @keyup.enter.native="handleQuery"
  21. />
  22. </el-form-item>
  23. <el-form-item label="地址" prop="address">
  24. <el-input
  25. v-model="queryParams.address"
  26. placeholder="请输入地址"
  27. clearable
  28. size="small"
  29. @keyup.enter.native="handleQuery"
  30. />
  31. </el-form-item>
  32. <el-form-item label="订单类型" prop="type">
  33. <el-select v-model="queryParams.type" placeholder="请选择订单类型" clearable size="small">
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="关联服务者ID" prop="userId">
  37. <el-input
  38. v-model="queryParams.userId"
  39. placeholder="请输入关联服务者ID"
  40. clearable
  41. size="small"
  42. @keyup.enter.native="handleQuery"
  43. />
  44. </el-form-item>
  45. <el-form-item label="关联宠物ID" prop="petId">
  46. <el-input
  47. v-model="queryParams.petId"
  48. placeholder="请输入关联宠物ID"
  49. clearable
  50. size="small"
  51. @keyup.enter.native="handleQuery"
  52. />
  53. </el-form-item>
  54. <el-form-item class="flex_one tr">
  55. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  56. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  57. </el-form-item>
  58. </el-form>
  59. <el-row :gutter="10" class="mb8">
  60. <el-col :span="1.5">
  61. <el-button
  62. type="primary"
  63. plain
  64. icon="el-icon-plus"
  65. size="mini"
  66. @click="handleAdd"
  67. v-hasPermi="['model:AppletOrder:add']"
  68. >新增</el-button>
  69. </el-col>
  70. <el-col :span="1.5">
  71. <el-button
  72. type="success"
  73. plain
  74. icon="el-icon-edit"
  75. size="mini"
  76. :disabled="single"
  77. @click="handleUpdate"
  78. v-hasPermi="['model:AppletOrder:edit']"
  79. >修改</el-button>
  80. </el-col>
  81. <el-col :span="1.5">
  82. <el-button
  83. type="danger"
  84. plain
  85. icon="el-icon-delete"
  86. size="mini"
  87. :disabled="multiple"
  88. @click="handleDelete"
  89. v-hasPermi="['model:AppletOrder:remove']"
  90. >删除</el-button>
  91. </el-col>
  92. <el-col :span="1.5">
  93. <el-button
  94. type="warning"
  95. plain
  96. icon="el-icon-download"
  97. size="mini"
  98. :loading="exportLoading"
  99. @click="handleExport"
  100. v-hasPermi="['model:AppletOrder:export']"
  101. >导出</el-button>
  102. </el-col>
  103. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
  104. </el-row>
  105. <el-table v-loading="loading" :data="AppletOrderList" @selection-change="handleSelectionChange">
  106. <el-table-column type="selection" width="55" align="center" />
  107. <el-table-column label="唯一标识" align="center" prop="id" />
  108. <el-table-column label="支付时间" align="center" prop="payTime" width="180" v-if="columns[0].visible">
  109. <template slot-scope="scope">
  110. <span>{{ parseTime(scope.row.payTime, '')}}</span>
  111. </template>
  112. </el-table-column>
  113. <el-table-column label="关联伴宠师" align="center" prop="userId" />
  114. <el-table-column label="订单状态" align="center" prop="status" v-if="columns[2].visible">
  115. <template slot-scope="scope">
  116. <dict-tag :options="dict.type.applet_order_status" :value="scope.row.status"/>
  117. </template>
  118. </el-table-column>
  119. <el-table-column label="本单酬劳" align="center" prop="price" v-if="columns[1].visible"/>
  120. <el-table-column label="地址" align="center" prop="address" v-if="columns[2].visible"/>
  121. <!-- <el-table-column label="订单类型" align="center" prop="type" v-if="columns[3].visible"/>-->
  122. <el-table-column label="无法接单原因" align="center" prop="reason"/>
  123. <el-table-column label="关联宠物ID" align="center" prop="petId" v-if="columns[6].visible"/>
  124. <!-- <el-table-column label="订单说明" align="center" prop="describeNo" v-if="columns[9].visible"/>-->
  125. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  126. <template slot-scope="scope">
  127. <el-button
  128. size="mini"
  129. type="text"
  130. icon="el-icon-edit"
  131. @click="handleUpdate(scope.row)"
  132. v-hasPermi="['model:AppletOrder:edit']"
  133. >修改</el-button>
  134. <el-button
  135. size="mini"
  136. type="text"
  137. icon="el-icon-delete"
  138. @click="handleDelete(scope.row)"
  139. v-hasPermi="['model:AppletOrder:remove']"
  140. >删除</el-button>
  141. </template>
  142. </el-table-column>
  143. </el-table>
  144. <pagination
  145. v-show="total>0"
  146. :total="total"
  147. :page.sync="queryParams.pageNum"
  148. :limit.sync="queryParams.pageSize"
  149. @pagination="getList"
  150. />
  151. <!-- 添加或修改订单信息对话框 -->
  152. <el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
  153. <el-form ref="form" :model="form" :rules="rules" label-width="108px" inline class="dialog-form-two">
  154. <el-form-item label="支付时间" prop="payTime">
  155. <el-date-picker clearable size="small"
  156. v-model="form.payTime"
  157. type="datetime"
  158. value-format="yyyy-MM-dd HH:mm:ss"
  159. placeholder="选择支付时间">
  160. </el-date-picker>
  161. </el-form-item>
  162. <el-form-item label="订单状态" prop="status">
  163. <el-select v-model="form.status" placeholder="请选择订单状态">
  164. <el-option
  165. v-for="dict in dict.type.applet_order_status"
  166. :key="dict.value"
  167. :label="dict.label"
  168. :value="parseInt(dict.value)" ></el-option>
  169. </el-select>
  170. </el-form-item>
  171. <el-form-item label="本单酬劳" prop="price">
  172. <el-input v-model="form.price" placeholder="请输入本单酬劳" />
  173. </el-form-item>
  174. <el-form-item label="地址" prop="address">
  175. <el-input v-model="form.address" placeholder="请输入地址" />
  176. </el-form-item>
  177. <el-form-item label="无法接单原因" prop="reason">
  178. <el-input v-model="form.reason" type="textarea" placeholder="请输入内容" />
  179. </el-form-item>
  180. <el-form-item label="订单标识" prop="userId">
  181. <el-input v-model="form.userId" placeholder="请输入订单标识" />
  182. </el-form-item>
  183. <el-form-item label="关联宠物ID" prop="petId">
  184. <el-input v-model="form.petId" placeholder="请输入关联宠物ID" />
  185. </el-form-item>
  186. </el-form>
  187. <div slot="footer" class="dialog-footer">
  188. <el-button type="primary" @click="submitForm"> </el-button>
  189. <el-button @click="cancel"> </el-button>
  190. </div>
  191. </el-dialog>
  192. </div>
  193. </template>
  194. <script>
  195. import { listAppletOrder, getAppletOrder, delAppletOrder, addAppletOrder, updateAppletOrder, exportAppletOrder } from "@/api/model/AppletOrder";
  196. export default {
  197. name: "AppletOrder",
  198. dicts: ['applet_order_status'],
  199. data() {
  200. return {
  201. // 遮罩层
  202. loading: true,
  203. // 导出遮罩层
  204. exportLoading: false,
  205. // 选中数组
  206. ids: [],
  207. // 非单个禁用
  208. single: true,
  209. // 非多个禁用
  210. multiple: true,
  211. // 显示搜索条件
  212. showSearch: true,
  213. // 总条数
  214. total: 0,
  215. // 订单信息表格数据
  216. AppletOrderList: [],
  217. // 弹出层标题
  218. title: "",
  219. // 是否显示弹出层
  220. open: false,
  221. // 查询参数
  222. queryParams: {
  223. pageNum: 1,
  224. pageSize: 10,
  225. payTime: null,
  226. price: null,
  227. status: null,
  228. address: null,
  229. type: null,
  230. reason: null,
  231. userId: null,
  232. petId: null,
  233. },
  234. // 表单参数
  235. form: {},
  236. // 表单校验
  237. rules: {
  238. createBy: [
  239. { required: true, message: "创建者不能为空", trigger: "blur" }
  240. ],
  241. price: [
  242. { required: true, message: "本单酬劳不能为空", trigger: "blur" }
  243. ],
  244. address: [
  245. { required: true, message: "地址不能为空", trigger: "blur" }
  246. ],
  247. type: [
  248. { required: true, message: "订单类型不能为空", trigger: "change" }
  249. ],
  250. userId: [
  251. { required: true, message: "关联服务者ID不能为空", trigger: "blur" }
  252. ],
  253. petId: [
  254. { required: true, message: "关联宠物ID不能为空", trigger: "blur" }
  255. ],
  256. },
  257. columns: [
  258. { key: 5, label: "支付时间", visible: true },
  259. { key: 6, label: "本单酬劳", visible: true },
  260. { key: 7, label: "地址", visible: true },
  261. { key: 8, label: "订单类型", visible: true },
  262. { key: 9, label: "无法接单原因", visible: true },
  263. { key: 10, label: "关联服务者ID", visible: false },
  264. { key: 11, label: "关联宠物ID", visible: false },
  265. ],
  266. };
  267. },
  268. created() {
  269. this.getList();
  270. },
  271. methods: {
  272. /** 查询订单信息列表 */
  273. getList() {
  274. this.loading = true;
  275. listAppletOrder(this.queryParams).then(response => {
  276. this.AppletOrderList = response.rows;
  277. this.total = response.total;
  278. this.loading = false;
  279. });
  280. },
  281. // 取消按钮
  282. cancel() {
  283. this.open = false;
  284. this.reset();
  285. },
  286. // 表单重置
  287. reset() {
  288. this.form = {
  289. id: null,
  290. createTime: null,
  291. createBy: null,
  292. updateTime: null,
  293. updateBy: null,
  294. payTime: null,
  295. status: null,
  296. price: null,
  297. address: null,
  298. type: null,
  299. reason: null,
  300. userId: null,
  301. petId: null,
  302. };
  303. this.resetForm("form");
  304. },
  305. /** 搜索按钮操作 */
  306. handleQuery() {
  307. this.queryParams.pageNum = 1;
  308. this.getList();
  309. },
  310. /** 重置按钮操作 */
  311. resetQuery() {
  312. this.resetForm("queryForm");
  313. this.handleQuery();
  314. },
  315. // 多选框选中数据
  316. handleSelectionChange(selection) {
  317. this.ids = selection.map(item => item.id)
  318. this.single = selection.length!==1
  319. this.multiple = !selection.length
  320. },
  321. /** 新增按钮操作 */
  322. handleAdd() {
  323. this.reset();
  324. this.open = true;
  325. this.title = "添加订单信息";
  326. },
  327. /** 修改按钮操作 */
  328. handleUpdate(row) {
  329. this.reset();
  330. const id = row.id || this.ids
  331. getAppletOrder(id).then(response => {
  332. this.form = response.data;
  333. this.open = true;
  334. this.title = "修改订单信息";
  335. });
  336. },
  337. /** 提交按钮 */
  338. submitForm() {
  339. this.$refs["form"].validate(valid => {
  340. if (valid) {
  341. if (this.form.id != null) {
  342. updateAppletOrder(this.form).then(response => {
  343. this.$modal.msgSuccess("修改成功");
  344. this.open = false;
  345. this.getList();
  346. });
  347. } else {
  348. addAppletOrder(this.form).then(response => {
  349. this.$modal.msgSuccess("新增成功");
  350. this.open = false;
  351. this.getList();
  352. });
  353. }
  354. }
  355. });
  356. },
  357. /** 删除按钮操作 */
  358. handleDelete(row) {
  359. const ids = row.id || this.ids;
  360. this.$modal.confirm('是否确认删除订单信息编号为"' + ids + '"的数据项?').then(function() {
  361. return delAppletOrder(ids);
  362. }).then(() => {
  363. this.getList();
  364. this.$modal.msgSuccess("删除成功");
  365. }).catch(() => {});
  366. },
  367. /** 导出按钮操作 */
  368. handleExport() {
  369. const queryParams = this.queryParams;
  370. this.$modal.confirm('是否确认导出所有订单信息数据项?').then(() => {
  371. this.exportLoading = true;
  372. return exportAppletOrder(queryParams);
  373. }).then(response => {
  374. this.download(response.msg);
  375. this.exportLoading = false;
  376. }).catch(() => {});
  377. }
  378. }
  379. };
  380. </script>