storeDetails.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template>
  2. <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
  3. <div style="padding: 20px; background-color: #fff;">
  4. 店铺详情
  5. </div>
  6. <div class="content" v-if="item!=null">
  7. <div class="desct">
  8. 店铺信息
  9. </div>
  10. <el-descriptions title="" :column="3" border>
  11. <el-descriptions-item label="店铺名称" >
  12. <span v-if="item!=null">{{item.storeName}}</span>
  13. </el-descriptions-item>
  14. <el-descriptions-item label="店铺介绍" >
  15. <span v-if="item!=null">{{item.descs}}</span>
  16. </el-descriptions-item>
  17. <el-descriptions-item label="店铺LOGO" >
  18. <el-image
  19. style="width: 100px"
  20. :src="item.logoUrl"
  21. :preview-src-list="[item.logoUrl]">
  22. </el-image>
  23. </el-descriptions-item>
  24. <el-descriptions-item label="地址" >
  25. <span v-if="item!=null">{{item.address}}</span>
  26. </el-descriptions-item>
  27. <el-descriptions-item label="店铺电话" >
  28. <span v-if="item!=null">{{item.phone}}</span>
  29. </el-descriptions-item>
  30. <el-descriptions-item label="资质证书">
  31. <el-image
  32. style="width: 100px"
  33. :src="item.licenseImages"
  34. :preview-src-list="[item.licenseImages]">
  35. </el-image>
  36. </el-descriptions-item>
  37. <el-descriptions-item label="商品总数" >
  38. <span v-if="item!=null">{{item.productCount}}</span>
  39. </el-descriptions-item>
  40. <el-descriptions-item label="状态" >
  41. <dict-tag :options="statusOptions" :value="item.status"/>
  42. </el-descriptions-item>
  43. <el-descriptions-item label="销量" >
  44. <span v-if="item!=null">{{item.salesCount}}</span>
  45. </el-descriptions-item>
  46. <el-descriptions-item label="余额" >
  47. <span v-if="item!=null">{{item.balance}}</span>
  48. </el-descriptions-item>
  49. <el-descriptions-item label="累计金额" >
  50. <span v-if="item!=null">{{item.totalMoney}}</span>
  51. </el-descriptions-item>
  52. <el-descriptions-item label="审核状态" >
  53. <dict-tag :options="isAuditOptions" :value="item.isAudit"/>
  54. </el-descriptions-item>
  55. <el-descriptions-item label="登录帐号" >
  56. <span v-if="item!=null">{{item.account}}</span>
  57. </el-descriptions-item>
  58. <el-descriptions-item label="创建时间" >
  59. <span v-if="item!=null">{{item.createTime}}</span>
  60. </el-descriptions-item>
  61. <el-descriptions-item label="更新时间" >
  62. <span v-if="item!=null">{{item.updateTime}}</span>
  63. </el-descriptions-item>
  64. </el-descriptions>
  65. <div v-if="item.isAudit===0" class="dialog">
  66. <el-divider content-position="left">审核</el-divider>
  67. <el-form ref="form1" :model="form1" :rules="rules1" label-width="80px">
  68. <el-form-item label="审核理由" prop="reason">
  69. <el-input v-model="form1.reason" type="textarea" placeholder="请输入审核理由" />
  70. </el-form-item>
  71. <el-form-item label="图片说明" prop="attachment">
  72. <ImageUpload v-model="form1.attachImage" type="image" :limit=5 :width="150"
  73. :height="150"/>
  74. </el-form-item>
  75. </el-form>
  76. <div slot="footer" class="dialog-footer">
  77. <el-button type="primary" @click="handleUpdate(1)">审核通过</el-button>
  78. <el-button type="primary" @click="handleUpdate(-1)">审核退回</el-button>
  79. </div>
  80. </div>
  81. <div v-if="item.isAudit!==0" class="dialog">
  82. <el-divider content-position="left">审核记录</el-divider>
  83. <el-table :data="item.auditLogs" border >
  84. <el-table-column label="描述" align="center" prop="des" :show-overflow-tooltip="true" />
  85. <el-table-column label="操作人员" align="center" prop="operName" width="100" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
  86. <el-table-column label="操作日期" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
  87. <template slot-scope="scope">
  88. <span>{{ parseTime(scope.row.operTime) }}</span>
  89. </template>
  90. </el-table-column>
  91. <el-table-column label="审核理由" align="center" prop="reason" ></el-table-column>
  92. <el-table-column label="图片" align="center" prop="attachImage" width="100" >
  93. <template slot-scope="scope">
  94. <el-image
  95. style="width: 100px"
  96. :src="scope.row.attachImage"
  97. :preview-src-list="[scope.row.attachImage]"
  98. v-if="scope.row.attachImage">
  99. </el-image>
  100. <span v-else >无图片</span >
  101. </template>
  102. </el-table-column>
  103. </el-table>
  104. </div>
  105. </div>
  106. </div>
  107. </template>
  108. <script>
  109. import { audit, getStore, getStoreAuditLog } from '@/api/hisStore/store'
  110. export default {
  111. name: "user",
  112. props:["data"],
  113. data() {
  114. return {
  115. statusOptions: [],
  116. // 审核状态字典
  117. isAuditOptions: [],
  118. item:null,
  119. logoUrl:[],
  120. form: {
  121. sreason: '',
  122. },
  123. form1: {},
  124. rules1: {
  125. auditReason: [
  126. { required: true, message: "审核理由不能为空", trigger: "blur" }
  127. ]
  128. },
  129. }
  130. },
  131. created() {
  132. this.getDicts("sys_company_status").then(response => {
  133. this.statusOptions = response.data;
  134. });
  135. this.getDicts("sys_company_isaudit").then(response => {
  136. this.isAuditOptions = response.data;
  137. });
  138. },
  139. destroyed() {
  140. this.item = null;
  141. this.form1 = {};
  142. },
  143. methods: {
  144. getDetails(orderId) {
  145. this.item = null;
  146. Promise.all([getStore(orderId), getStoreAuditLog(orderId)])
  147. .then(([storeResponse, auditResponse]) => {
  148. this.item = storeResponse.data;
  149. // 确保 item 不为 null 后再设置 auditLogs
  150. this.$set(this.item, 'auditLogs', auditResponse.auditLog);
  151. });
  152. },
  153. handleUpdate(oper) {
  154. let operStr = oper === 1 ? "审核通过" : "审核退回";
  155. this.$confirm("是否确认"+operStr+"店铺?", "警告", {
  156. confirmButtonText: "确定",
  157. cancelButtonText: "取消",
  158. type: "warning"
  159. }).then(()=> {
  160. let param = {}
  161. param.storeId = this.item.storeId;
  162. param.reason = this.form1.reason;
  163. param.attachImage = this.form1.attachImage;
  164. param.isAudit=oper;
  165. return audit(param);
  166. }).then(res => {
  167. if(res.code === 200){
  168. this.$message.success("审核成功");
  169. this.getDetails(this.item.storeId);
  170. this.$emit('fresh');
  171. }else{
  172. this.$message.error("审核失败",res.msg);
  173. }
  174. }).catch(function() {
  175. }).finally(()=>{
  176. this.form1.auditReason = null;
  177. this.form1.attachment = null;
  178. });
  179. },
  180. }
  181. }
  182. </script>
  183. <style>
  184. .content{
  185. height: 100%;
  186. background-color: #fff;
  187. padding: 0px 20px;
  188. padding-bottom: 20px;
  189. margin: 20px;
  190. }
  191. .el-descriptions-item__label.is-bordered-label{
  192. font-weight: normal;
  193. }
  194. .el-descriptions-item__content {
  195. max-width: 150px;
  196. min-width: 100px;
  197. }
  198. .desct{
  199. padding-top: 20px;
  200. padding-bottom: 20px;
  201. color: #524b4a;
  202. font-weight: bold;
  203. }
  204. </style>